#include<stdio.h>
#include<stdlib.h>
typedef struct node{
char data;
int left,right;
}node;
node tree1[15];
node tree2[15];
int createtree(node tree[]){
int n;
char a,b;
scanf("%d",&n);
getchar();
if(n==0)
return -1;
int check[15]={0};
for(int i=0;i<n;i++){
scanf("%c %c %c",&tree[i].data,&a,&b);
if(a!='-'){
tree[i].left=a-'0';
check[tree[i].left]=1;
}
else tree[i].left=-1;
if(b!='-'){
tree[i].right=b-'0';
check[tree[i].right]=1;
}
else tree[i].right=-1;
getchar();
}
for(int i=0;i<n;i++){
if(!check[i])
return i;
}
}
int match(int root1,int root2){
if(root1==-1&&root2==-1)
return 1;
if(root1==-1||root2==-1)
return 0;
if(tree1[root1].data!=tree2[root2].data)
return 0;
if(match(tree1[root1].left,tree2[root2].left)&&match(tree1[root1].right,tree2[root2].right))
return 1;
if(match(tree1[root1].left,tree2[root2].right)&&match(tree1[root1].right,tree2[root2].left))
return 1;
else
return 0;
}
int main(){
int root1=createtree(tree1);
int root2=createtree(tree2);
if(match(root1,root2))
printf("Yes");
else
printf("No");
return 0;
}