//poj 3630
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <cstring>
using namespace std;
const int inf=1<<28;
int n,m,k;
const int root=0;
struct node
{
int branch[10];
}num[100000];
int mark[100000];
int size;
bool insert(char *key)
{
int cur=root;
int len=strlen(key);
for (int i=0;i<len;i++)
{
if (i==len-1 && num[cur].branch[key[i]-'0']!=-1)
return false;
if (num[cur].branch[key[i]-'0']==-1)
{
num[cur].branch[key[i]-'0']=size;
memset(num[size].branch,-1,sizeof(num[size].branch));
size++;
}
else if (mark[num[cur].branch[key[i]-'0']])
return false;
cur=num[cur].branch[key[i]-'0'];
}
mark[cur]=1;
return true;
}
int main()
{
int t;
scanf("%d",&t);
char phone[15];
while (t--)
{
scanf("%d",&n);
memset(mark,0,sizeof(mark));
bool flag = true;
size=1;
memset(num[0].branch,-1,sizeof(num[0].branch));
while (n--)
{
scanf("%s",phone);
if (!flag) continue;
if (!insert(phone))
flag=false;
}
if (flag)
printf("YES/n");
else printf("NO/n");
}
return 0;
}