#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct ac //节点结构体
{
int v;
struct ac *child[11];
}tree;
tree *root; //头节点,不存任何值
int flag;
void add(char *p)
{
int i,j,l=strlen(p);
tree *a=root,*b;
for(i=0;i<l;i++) //每个单词占一层
{
int k=p[i]-'0';
if(a->child[k]!=0)
{
a=a->child[k];
if(a->v==1) // 遍历到一个前缀
{
flag=1;
break;
}
}
else
{
b=(tree *)malloc(sizeof(tree));
for(j=0;j<=9;j++)
b->child[j]=0;
a->child[k]=b;
a=b;
}
}
a->v=1; //每个单词最后一位标记为1.
for(i=0;i<=9;i++)//若该单词最后一位存在下一个节点与之相连,则该单词为前缀
{
if(a->child[i]!=0)
{
flag=1;
return ;
}
}
}
void clear(tree * p) //释放内存,该题无此函数mle
{
if(p==NULL)
return ;
else
{
for(int i=0;i<=9;i++)
clear(p->child[i]);
}
free(p);
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
flag=0;
root=(tree *)malloc(sizeof(tree));
int i,n;
for(i=0;i<=9;i++)
root->child[i]=0;
root->v=0;
char s[12];
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%s",s);
add(s);
}
if(flag)
printf("NO\n");
else
printf("YES\n");
clear(root);
}
return 0;
}