#include <stdio.h>
#include <iostream>
using namespace std;
typedef struct TNode *Tree;
typedef int ElementType;
struct TNode {
ElementType Data;
Tree Left;//左子树
Tree Right;//右子树
int flag;
};
Tree Insert(Tree T,int v){
if (!T) {//若原树为空,生成并返回一个结点的二叉搜索树
T = new TNode;
T->Data = v;
T->Left = T->Right = NULL;
}
else {
//开始找要插入元素的位置
if (v < T->Data)T->Left = Insert(T->Left, v);//递归插入左子树
else if (v > T->Data)T->Right = Insert(T->Right, v);//递归插入右子树
}
return T;
}
Tree MakeTree(int N) {
Tree T;
int v;
cin >> v;
T = new TNode;
T->Data = v;
T->Left = T->Right = NULL;
T->flag = 0;
while (N--) {
cin >> v;
T = Insert(T, v);
}
return T;
}
int check(Tree T, int v) {
if (T->flag) {
if (T->Data < v)check(T->Right, v);
else if (T->Data < v) check(T->Right, v);
else return 0;
}
else {
if (T->Data == v) {
T->flag = 1;
return 1;
}
else return 0;
}
}
int Judge(Tree T, int N) {
int v, flag = 0;
cin >> v;
if (v != T->Data)flag = 1;
else T->flag = 1;
while (N--) {
cin >> v;
if ((!flag) && (!check(T, v)))flag = 1;
}
if (flag)return 0;
else return 1;
}
void Reset(Tree T) {
if (T->Left)Reset(T->Left);
if (T->Right)Reset(T->Right);
T->flag = 0;
}
void FreeTree(Tree T) {
if (T->Left)Reset(T->Left);
if (T->Right)Reset(T->Right);
free(T);
}
int main()
{
Tree T;
int N, L, i;
cin >> N;
while (N) {
cin >> L;
while (L--) {
T = MakeTree(N);
while (L--) {
if (Judge(T, N))cout << "Yes" << endl;
else cout << "No" << endl;
Reset(T);
}
FreeTree(T);
cin >> N;
}
}
}