#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<map>
#include<queue>
#include <deque>
#include <list>
#include <ctime>
#include <stack>
#include <vector>
#include<iomanip>
#include<set>
#include <bitset>
#include <bits/stdc++.h>
#include <cassert>
using namespace std;
#define Maxn 16
#define mod
typedef long long ll;
typedef pair<int, int> PII;
#define FOR(i,j,n) for(int i=j;i<=n;i++)
#define DFR(i,j,k) for(int i=j;i>=k;--i)
#define lowbit(a) a&-a
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mem(a) memset(a,0,sizeof(a))
#define eps 1e-9
#define PB push_back
#define MP make_pair
#define AA first
#define BB second
#define SZ size()
#define BG begin()
#define OP begin()
#define ED end()
#define SQ(x) ((x)*(x))
const int inf = 0x7f7f7f7f;
const double pi = acos(-1.0);
char base='0';
int len;
struct trie
{ struct trie *next[10];
bool value;
trie()
{ FOR(i,0,9)
next[i]=NULL;
value=false;
}
};
trie * create()
{ trie * tnew = (trie *)malloc(sizeof (trie));
tnew->value=false;
FOR(i,0,9) tnew->next[i]=NULL;
return tnew;
}
int deal(trie * T)
{ int i;
for(i=0;i<=9;i++)
{
if(T->next[i]!=NULL)
deal(T->next[i]);
}
free(T);
return 0;
}
int T,n;
int main()
{ cin>>T;
while(T--)
{ char str[16];
trie * root=create();
trie * tmp;
scanf("%d",&n);
bool flag=false;
FOR(i,1,n)
{ scanf("%s",str);
int len=strlen(str);
tmp=root;
if(!flag)
FOR(i,0,len-1)
{ if(tmp->next[str[i]-base]==NULL)
tmp->next[str[i]-base]=create();
if(tmp->value)
flag=true;
tmp=tmp->next[str[i]-base];
}
tmp->value=true;
FOR(i,0,9)
{ if(tmp->next[i]!=NULL)
{
flag=true;
break;
}
}
}
if(flag)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
deal(root);
}
return 0;
}