1 #include <stdio.h>
2 #include <stdlib.h>
3 int n,m;
4 struct node
5 {
6 char date;
7 int left,right;
8 } tree1[12],tree2[12];
9 void creat(struct node tree[],int n)
10 {
11 char b[2];
12 int i;
13 for(i=0; i<n; i++)
14 {
15 scanf("%s",b);
16 tree[i].date = b[0];
17 scanf("%s",b);
18 if(b[0]=='-') tree[i].left=11;
19 else tree[i].left = b[0]-'0';
20 scanf("%s",b);
21 if(b[0]=='-') tree[i].right=11;
22 else tree[i].right = b[0]-'0';
23 }
24 }
25 int check2(int i,int j)
26 {
27 if(tree1[tree1[i].left].date==tree2[tree2[j].left].date&&tree1[tree1[i].right].date==tree2[tree2[j].right].date)
28 return 1;
29 if(tree1[tree1[i].right].date==tree2[tree2[j].left].date&&tree1[tree1[i].left].date==tree2[tree2[j].right].date)
30 return 1;
31 return 0;
32 }
33 int check(struct node tree1[],struct node tree2[])
34 {
35 int i,j;
36 for(i=0; i<n; i++)
37 {
38 for(j=0; j<m; j++)
39 {
40 if(tree1[i].date==tree2[j].date)
41 {
42 if(check2(i,j)) break;
43 else return 0;
44 }
45 }
46 if(j==m) return 0;
47 }
48 return 1;
49 }
50 int main()
51 {
52 while(~scanf("%d",&n))
53 {
54 creat(tree1,n);
55 scanf("%d",&m);
56 creat(tree2,m);
57 if(m!=n) printf("No\n");
58 else if(check(tree1,tree2)) printf("Yes\n");
59 else printf("No\n");
60 }
61 return 0;
62 }