1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=1005;
4 const int maxm=3005;
5 struct edge{int to,nex;}e[maxm];
6 int head[maxn],tot;
7 int deep[maxn],f[maxn][30];
8 int T,n,m,q;
9 inline void add(int x,int y){e[++tot].to=y;e[tot].nex=head[x];head[x]=tot;}
10 void dfs(int k)
11 {
12 for(int i=head[k];i;i=e[i].nex)
13 {
14 if(!deep[e[i].to])
15 {
16 deep[e[i].to]=deep[k]+1;
17 f[e[i].to][0]=k;
18 dfs(e[i].to);
19 }
20 }
21 }
22 void init()
23 {
24 for(int j=1;(1<<j)<=n;++j)
25 for(int i=1;i<=n;++i)
26 if(f[i][j-1]) f[i][j]=f[f[i][j-1]][j-1];
27 }
28 int LCA(int x,int y)
29 {
30 if(deep[x]<deep[y]) swap(x,y);
31 int i;for(i=0;(1<<i)<=n;++i);--i;
32 for(int j=i;j>=0;--j) if(deep[x]-(1<<j)>=deep[y]) x=f[x][j];
33 if(x==y) return x;
34 for(int j=i;j>=0;--j) if(f[x][j]&&f[x][j]!=f[y][j]) x=f[x][j],y=f[y][j];
35 return f[x][0];
36 }
37 void clear()
38 {
39 tot=0;
40 memset(f,0,sizeof(f));
41 memset(deep,0,sizeof(deep));
42 memset(head,0,sizeof(head));
43 memset(e,0,sizeof(e));
44 }
45 int main()
46 {
47 scanf("%d",&T);
48 for(int i=1;i<=T;++i)
49 {
50 scanf("%d",&n);
51 for(int j=1;j<=n;++j)
52 {
53 scanf("%d",&m);
54 for(int k=1,tmp;k<=m;++k)
55 {
56 scanf("%d",&tmp);
57 add(j,tmp);
58 }
59 }
60 dfs(1);
61 init();
62 scanf("%d",&q);
63 printf("Case %d:\n",i);
64 for(int i=1,x,y;i<=q;++i) scanf("%d%d",&x,&y),printf("%d\n",LCA(x,y));
65 clear();
66 }
67 return 0;
68 }