#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
struct node{
bool endofmark;
node *next[11];
node()
{
endofmark=false;
for(int i=0;i<10;i++)
next[i]=NULL;
}
}*root;
int insert(string str)
{
node *curr=root;
int id;
int created=0;
for(int i=0;i<str.size();i++)
{
id=str[i]-'0';
if(curr->next[id]==NULL)
{
curr->endofmark=false;
curr->next[id]=new node();
created =1;
}
curr=curr->next[id];
}
if(created==0)
curr->endofmark=false;
else
curr->endofmark=true;
return created;
}
bool search(string str)
{
node *curr=root;
int len=str.size();
int id;
for(int i=0;i<len-1;i++)
{
id=str[i]-'0';
curr=curr->next[id];
curr->endofmark=false;
}
if(curr->next[str[len-1]-'0'])
curr=curr->next[str[len-1]-'0'];
for(int i=0;i<=9;i++)
{
if(curr->next[i])
return false;
}
return true;
}
void delet(node *curr)
{
for(int i=0;i<10;i++)
{
if(curr->next[i])
delet(curr->next[i]);
}
delete(curr);
}
int main()
{
int t,n,d,consist;
vector<string> VB;
string str;
cin>>t;
while(t--)
{
cin>>n;
root=new node();
consist=0;
d=0;
for(int i=0;i<n;i++)
{
cin>>str;
VB.push_back(str);
d = insert(str);
if(d==0)
consist=-1;
}
if(consist==-1)
{
cout<<"NO\n";
VB.clear();
delet(root);
consist=0;
continue;
}
for(int i=0;i<n;i++)
{
if(!search(VB[i]))
{
cout<<"NO\n";
consist=-1;
break;
}
}
if(consist!=-1)
cout<<"YES\n";
VB.clear();
delet(root);
consist=0;
}
return 0;
}