#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
#define MAX 1010
#define MAXLVL 12
#define rl(x) scanf("%d",&x)
int parent[MAX+12],dp[MAXLVL+2][MAX],depth[MAXLVL+12];
int LCA(int u, int v)
{
if(depth[u] < depth[v])
swap(u,v);
int diff = depth[u] - depth[v];
for(int i=0; i<MAXLVL; i++)
if( (diff>>i)&1 )
{
u = dp[i][u];
}
if(u == v)
return u;
for(int i=MAXLVL-1; i>=0; i--)
if(dp[i][u] != dp[i][v])
{
u = dp[i][u];
v = dp[i][v];
}
return dp[0][u];
}
int main()
{
int t,ca=1;
rl(t);
while(ca<=t)
{
int n,m;
rl(n);
memset(depth,0,sizeof depth);
parent[0]=-1;
for(int i=0;i<n;i++)
{
rl(m);
while(m--)
{
int x,y;
rl(y);
y--;
depth[y]=depth[i]+1;
parent[y]=i;
}
}
for(int i=0;i<MAXLVL;i++)
for(int j=0; j<n; j++)
dp[i][j]=-1;
for(int i=0;i<n;i++)
dp[0][i]=parent[i];
for(int i=1; i<MAXLVL; i++)
for(int j=0; j<n; j++)
if(dp[i-1][j] != -1)
dp[i][j] = dp[i-1][dp[i-1][j]];
printf("Case %d:\n",ca);
int q,x,y;
rl(q);
while(q--)
{
cin>>x>>y;
x--,y--;
cout<<LCA(x,y)+1<<endl;
}
ca++;
}
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBNQVggMTAxMAojZGVmaW5lIE1BWExWTCAxMgojZGVmaW5lIHJsKHgpIHNjYW5mKCIlZCIsJngpCmludCBwYXJlbnRbTUFYKzEyXSxkcFtNQVhMVkwrMl1bTUFYXSxkZXB0aFtNQVhMVkwrMTJdOwppbnQgTENBKGludCB1LCBpbnQgdikgCnsKCWlmKGRlcHRoW3VdIDwgZGVwdGhbdl0pIAoJc3dhcCh1LHYpOwoJaW50IGRpZmYgPSBkZXB0aFt1XSAtIGRlcHRoW3ZdOwoJZm9yKGludCBpPTA7IGk8TUFYTFZMOyBpKyspIAoJaWYoIChkaWZmPj5pKSYxICkgCgl7CgkJdSA9IGRwW2ldW3VdOwoJfQoJaWYodSA9PSB2KSAKCXJldHVybiB1OwoJZm9yKGludCBpPU1BWExWTC0xOyBpPj0wOyBpLS0pIAoJaWYoZHBbaV1bdV0gIT0gZHBbaV1bdl0pIAoJewoJCXUgPSBkcFtpXVt1XTsKCQl2ID0gZHBbaV1bdl07Cgl9CglyZXR1cm4gZHBbMF1bdV07Cn0KaW50IG1haW4oKQp7CglpbnQgdCxjYT0xOwoJcmwodCk7Cgl3aGlsZShjYTw9dCkKCXsKCQlpbnQgbixtOwoJCXJsKG4pOwoJCW1lbXNldChkZXB0aCwwLHNpemVvZiBkZXB0aCk7CgkJcGFyZW50WzBdPS0xOwoJCWZvcihpbnQgaT0wO2k8bjtpKyspCgkJewoJCQlybChtKTsKCQkJd2hpbGUobS0tKQoJCQl7CgkJCQlpbnQgeCx5OwoJCQkJcmwoeSk7CgkJCQl5LS07CgkJCQlkZXB0aFt5XT1kZXB0aFtpXSsxOwoJCQkJcGFyZW50W3ldPWk7CgkJCX0KCQl9CgkJZm9yKGludCBpPTA7aTxNQVhMVkw7aSsrKQoJCSAgICBmb3IoaW50IGo9MDsgajxuOyBqKyspCgkJCWRwW2ldW2pdPS0xOwoJCWZvcihpbnQgaT0wO2k8bjtpKyspCgkJCWRwWzBdW2ldPXBhcmVudFtpXTsKCQlmb3IoaW50IGk9MTsgaTxNQVhMVkw7IGkrKykKCQkJZm9yKGludCBqPTA7IGo8bjsgaisrKQoJCQkJaWYoZHBbaS0xXVtqXSAhPSAtMSkKCQkJCQlkcFtpXVtqXSA9IGRwW2ktMV1bZHBbaS0xXVtqXV07CgkJcHJpbnRmKCJDYXNlICVkOlxuIixjYSk7CgkJaW50IHEseCx5OwoJCXJsKHEpOwoJCXdoaWxlKHEtLSkKCQl7CgkJCWNpbj4+eD4+eTsKCQkJeC0tLHktLTsKCQkJY291dDw8TENBKHgseSkrMTw8ZW5kbDsKCQl9CgkJY2ErKzsKCQkKCX0KfQ==