#include <iostream>
#include <string.h>
using namespace std;
class TreeNode{
public:
char n[10];
TreeNode *left;
TreeNode *right;
TreeNode(){
left = NULL;
right = NULL;
}
};
bool flag = false;
void search_and_insert(TreeNode *root, TreeNode *current);
int compare(char *a, char *b);
void deleteall(TreeNode *node);
int main()
{
int k;
int n;
cin>>k;
TreeNode *root;
for(int i=0 ;i<k; i++)
{
cin>>n;
flag = false;
for(int j=0; j<n; j++)
{
if(j==0)
{
root = new TreeNode();
cin>>root->n;
}
else
{
TreeNode * current = new TreeNode();
cin>>current->n;
if(!flag)
search_and_insert(root, current);
if(flag)
delete current;
}
}
if(flag)
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
deleteall(root);
}
return 0;
}
void search_and_insert(TreeNode *root, TreeNode *current)
{
TreeNode *temp = root;
while(temp!=NULL)
{
int result = compare(temp->n, current->n);
if(result == 0)
return;
else if(result == 1)
{
if(temp->left == NULL)
{
temp->left = current;
return;
}
else
temp = temp->left;
}
else if(result == -1)
{
if(temp->right == NULL)
{
temp->right = current;
return;
}
else
temp = temp->right;
}
}
}
int compare(char *a, char *b)
{
int lena = strlen(a);
int lenb = strlen(b);
int min = lena>lenb ? lenb : lena;
for(int i=0; i<min; i++)
{
if(a[i] > b[i])
return 1;
else if(a[i] < b[i])
return -1;
}
flag = true;
return 0;
}
void deleteall(TreeNode *node)
{
if(node->left!=NULL)
deleteall(node->left);
if(node->right!=NULL)
deleteall(node->right);
delete node;
}