#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------debug\n");
using namespace std;
const int maxn=1010;
int n,m;
int head[maxn],to[maxn<<1],nxt[maxn<<1],tot=0;
int dep[maxn],f[maxn][maxn];
void add(int u,int v)
{
to[++tot]=v;
nxt[tot]=head[u];
head[u]=tot;
}
void dfs1(int u,int fa)
{
f[v][0]=u;dep[u]=dep[fa]+1;
for(int i=0;i<=20;i++) f[u][i+1]=f[f[u][i]][i];
for(int i=head[u];i;i=nxt[i])
{
int v=to[i];
if(v==fa) continue;
dfs1(v,u);
}
}
int LCA (int x,int y)
{
if(dep[x]<dep[y]) swap(x,y);
for(int i=20;i>=0;i--)//¶þ½øÖÆÎÜÏÝ·Ö¸î
{
if(dep[f[x][i]]>=dep[y]) x=f[x][i];
if(x==y) return x;
}
for(int i=20;i>=0;i--)
{
if(f[x][i]!=f[y][i])
{
x=f[x][i];
y=f[y][i];
}
return f[x][0];
}
}
int dis(int x,int y){
return dep[x]+dep[y]-2*dep[LCA(x,y)];
}
int main()
{
ios::sync_with_stdio(false); cin.tie(0);
int T,cnt=0; cin>>T;
while(++cnt<=T)
{
memset(f,0,sizeof(f));
memset(dep,0,sizeof(dep));
memset(head,0,sizeof(head));
memset(to,0,sizeof(to));
memset(nxt,0,sizeof(nxt));
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>m;
for(int j=1;j<=m;j++)
{
int tmp; cin>>tmp;
add(i,tmp);add(tmp,i);
}
}
dfs1(1,1);
int Q; cin>>Q;
cout<<"Case "<<cnt<<":"<<'\n';
while(Q--)
{
int u,v; cin>>u>>v;
cout<<LCA(u,v)<<'\n';
}
}
return 0;
}
/*
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------debug\n");
using namespace std;
int n,m,dep[1010],fa[1010][1010];
vector<int> g[1010];
void dfs1(int x,int faa)
{
fa[x][0]=faa; dep[x]=dep[faa]+1;
for(int i=0;i<=15;i++)
{
fa[x][i+1]=fa[fa[x][i]][i];
}
for(int i=0;i<g[x].size();i++)
{
int v=g[x][i];
if(v==faa) continue;
dfs1(v,x);
}
}
int LCA(int x,int y)
{
if(dep[x]<dep[y]) swap(x,y);
for(int i=15;i>=0;i--)
{
if(dep[fa[x][i]]>=dep[y]) x=fa[x][i];
if(x==y) return x;
}
for(int i=15;i>=0;i--)
{
if(fa[x][i]!=fa[y][i])
{
x=fa[x][i];
y=fa[y][i];
}
else return fa[x][0];
}
}
int main()
{
ios::sync_with_stdio(false); cin.tie(0);
int T,cnt=0; cin>>T;
while(++cnt<=T)
{
memset(fa,0,sizeof(fa));
memset(dep,0,sizeof(dep));
for(int i=1;i<=1009;i++)
g[i].clear();
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>m;
for(int j=1;j<=m;j++)
{
int tmp; cin>>tmp;
g[i].push_back(tmp);
}
}
dfs1(1,1);
int Q; cin>>Q;
cout<<"Case "<<cnt<<":"<<'\n';
while(Q--)
{
int u,v; cin>>u>>v;
cout<<LCA(u,v)<<'\n';
}
}
return 0;
}
*/