#include <iostream>
using namespace std;
struct Node{
int num;
Node * Left;
Node * Right;
Node(int n_,Node* p1,Node*p2):num(n_),Left(p1),Right(p2){}
Node(){}
};
insert_(int t,Node* root){ if(root==NULL)
{
root = new Node(t,NULL,NULL);
}
else if(t > (root->num))
{
root->Right = insert_(t,root->Right);
}
else if(t < (root->num))
{
root->Left = insert_(t,root->Left); }
return root;
}
Node * build(int n)
{
Node* root=NULL;
while(n--) {
int t; cin>>t;
root = insert_(t,root);
}
return root;
}
{
if (t1 == NULL && t2 == NULL) return true;
else if (t1->num == t2->num) return isSame(t1->Left, t2->Left) && isSame(t1->Right, t2->Right);
else return false;
}
void FreeTree(Node* root){
if(root->Left)
FreeTree(root->Left);
if(root->Right)
FreeTree(root->Right);
delete root;
}
int main(){
int N,L;
while(1)
{
cin>>N>>L;
if(!N)
return 0;
Node* root=build(N);
for (int i = 0; i < L; i++)
{
Node* test=build(N);
if (isSame(root, test))
<< "Yes" << endl;
else
cout << "No" << endl; FreeTree(test);
FreeTree(root);
return 0;
}