#include <bits/stdc++.h>
using namespace std;
int cnt,n;
struct node
{
int data;
node *lchild;
node *rchild;
};
node *creat(node *tree,int x)
{
if(tree==NULL)
{
tree = new node();
tree -> data = x;
tree -> lchild = NULL;
tree -> rchild = NULL;
}
else
{
if(x > tree->data)
tree -> rchild = creat(tree->rchild,x);
else
tree -> lchild = creat(tree->lchild,x);
}
return tree;
}
void judge(node *t1,node *t2)
{
if(t1&&t2)
{
if(t1->data!=t2->data)
{
cnt = 1;
return ;
}
judge(t1->lchild,t2->lchild);
judge(t1->rchild,t2->rchild);
}
}
int main()
{
int t;
int num;
while(cin>>n)
{
if(n==0)
break;
cin>>t;
node *root = new node();
for(int i=0;i<n;i++)
{
cin>>num;
root = creat(root,num);
}
while(t--)
{
cnt = 0;
node *root1 = new node();
for(int i=0;i<n;i++)
{
cin>>num;
root1 = creat(root1,num);
}
judge(root,root1);
if(cnt == 0)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
return 0;
}
09-02