#include <bits/stdc++.h>
using namespace std;
#define log_n 11
#define debug(x) cout<<#x<<" = "<<x<<endl
int n;
vector<int> adjList[10005];
int ancestor[15][10005];
int lv[1005];
void dfs(int u,int e,int depth)
{
lv[u]=depth;
ancestor[0][u]=e;
for(int v: adjList[u]){
if(v==e) continue;
dfs(v,u,depth+1);
}
}
void buildAncestor()
{
dfs(1,0,1);
for(int i=1;i<=log_n;i++){
for(int u=1;u<=n;u++){
ancestor[i][u]=ancestor[i-1][ ancestor[i-1][u] ];
}
}
}
int upward(int u,int d)
{
for(int i=log_n;i>=0;i--){
if(d & (1<<i)){
u=ancestor[i][u];
}
}
return u;
}
int LCA(int a,int b)
{
if(lv[a]>lv[b]) swap(a,b);
b=upward(b,lv[b]-lv[a]);
if(a!=b){
for(int i=log_n;i>=0;i--){
if(ancestor[i][a]!=ancestor[i][b]){
a=ancestor[i][a];
b=ancestor[i][b];
}
}
a=ancestor[0][a];
}
return a;
}
int main()
{
int t;
cin>>t;
int c=0;
while(t--){
cout<<"Case "<<++c<<":\n";
memset(lv,0,sizeof(lv));
cin>>n;
for(int i=1;i<=n;i++){
adjList[i].clear();
}
for(int i=1;i<=n;i++){
int m;
cin>>m;
while(m--){
int a;
cin>>a;
adjList[i].push_back(a);
adjList[a].push_back(i);
}
}
buildAncestor();
int q;
cin>>q;
while(q--){
int a,b;
cin>>a>>b;
cout<<LCA(a,b)<<'\n';
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbG9nX24gMTEKI2RlZmluZSBkZWJ1Zyh4KSBjb3V0PDwjeDw8IiA9ICI8PHg8PGVuZGwKaW50IG47CnZlY3RvcjxpbnQ+IGFkakxpc3RbMTAwMDVdOwppbnQgYW5jZXN0b3JbMTVdWzEwMDA1XTsKaW50IGx2WzEwMDVdOwp2b2lkIGRmcyhpbnQgdSxpbnQgZSxpbnQgZGVwdGgpCnsKICAgIGx2W3VdPWRlcHRoOwogICAgYW5jZXN0b3JbMF1bdV09ZTsKICAgIGZvcihpbnQgdjogYWRqTGlzdFt1XSl7CiAgICAgICAgaWYodj09ZSkgY29udGludWU7CiAgICAgICAgZGZzKHYsdSxkZXB0aCsxKTsKICAgIH0KfQp2b2lkIGJ1aWxkQW5jZXN0b3IoKQp7CiAgICBkZnMoMSwwLDEpOwogICAgZm9yKGludCBpPTE7aTw9bG9nX247aSsrKXsKICAgICAgICBmb3IoaW50IHU9MTt1PD1uO3UrKyl7CiAgICAgICAgICAgIGFuY2VzdG9yW2ldW3VdPWFuY2VzdG9yW2ktMV1bIGFuY2VzdG9yW2ktMV1bdV0gXTsKICAgICAgICB9CiAgICB9Cn0KaW50IHVwd2FyZChpbnQgdSxpbnQgZCkKewogICAgZm9yKGludCBpPWxvZ19uO2k+PTA7aS0tKXsKICAgICAgICBpZihkICYgKDE8PGkpKXsKICAgICAgICAgICAgdT1hbmNlc3RvcltpXVt1XTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdTsKfQppbnQgTENBKGludCBhLGludCBiKQp7CiAgICBpZihsdlthXT5sdltiXSkgc3dhcChhLGIpOwogICAgYj11cHdhcmQoYixsdltiXS1sdlthXSk7CiAgICBpZihhIT1iKXsKICAgICAgICBmb3IoaW50IGk9bG9nX247aT49MDtpLS0pewogICAgICAgICAgICBpZihhbmNlc3RvcltpXVthXSE9YW5jZXN0b3JbaV1bYl0pewogICAgICAgICAgICAgICAgYT1hbmNlc3RvcltpXVthXTsKICAgICAgICAgICAgICAgIGI9YW5jZXN0b3JbaV1bYl07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYT1hbmNlc3RvclswXVthXTsKICAgIH0KICAgIHJldHVybiBhOwp9CmludCBtYWluKCkKewogICAgaW50IHQ7CiAgICBjaW4+PnQ7CiAgICBpbnQgYz0wOwogICAgd2hpbGUodC0tKXsKICAgICAgICBjb3V0PDwiQ2FzZSAiPDwrK2M8PCI6XG4iOwogICAgICAgIG1lbXNldChsdiwwLHNpemVvZihsdikpOwogICAgICAgIGNpbj4+bjsKICAgICAgICBmb3IoaW50IGk9MTtpPD1uO2krKyl7CiAgICAgICAgICAgIGFkakxpc3RbaV0uY2xlYXIoKTsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgICAgICBpbnQgbTsKICAgICAgICAgICAgY2luPj5tOwogICAgICAgICAgICB3aGlsZShtLS0pewogICAgICAgICAgICAgICAgaW50IGE7CiAgICAgICAgICAgICAgICBjaW4+PmE7CiAgICAgICAgICAgICAgICBhZGpMaXN0W2ldLnB1c2hfYmFjayhhKTsKICAgICAgICAgICAgICAgIGFkakxpc3RbYV0ucHVzaF9iYWNrKGkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJ1aWxkQW5jZXN0b3IoKTsKICAgICAgICBpbnQgcTsKICAgICAgICBjaW4+PnE7CiAgICAgICAgd2hpbGUocS0tKXsKICAgICAgICAgICAgaW50IGEsYjsKICAgICAgICAgICAgY2luPj5hPj5iOwogICAgICAgICAgICBjb3V0PDxMQ0EoYSxiKTw8J1xuJzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQo=