#include<cstdio>
#include<iostream>
using namespace std;
const int N=15;
int k;
char a[N],b[N],c[N];
struct node{
int value;
node *l,*r;
node(int value=0,node *l=NULL,node *r=NULL):value(value),l(l),r(r){};
};
void creat(int t,node *&root){
if(!root) root=new node(t);
else if(root->value<t) creat(t,root->r);
else creat(t,root->l);
}
void preorder(char d[],node *root){
if(root){
d[k++]=root->value+'0';
preorder(d,root->l);
preorder(d,root->r);
}
}
void remove_tree(node *root){
if(!root) return;
remove_tree(root->l);
remove_tree(root->r);
delete root;
}
int main(){
int n;
while(cin>>n){
if(n==0) break;
node *root=NULL;
scanf("%s",a);
for(int i=0;a[i]!='\0';i++) creat(a[i]-'0',root);
k=0;
preorder(b,root);
b[k]='\0';
while(n--){
node *root2=NULL;
scanf("%s",a);
for(int i=0;a[i]!='\0';i++) creat(a[i]-'0',root2);
k=0;
preorder(c,root2);
c[k]='\0';
if(strcmp(b,c)==0) cout<<"YES\n";
else cout<<"NO\n";
remove_tree(root2);
}
remove_tree(root);
}
return 0;
}