#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
vector<ll> graph[1001];
vector<ll> depth(1001);
vector<ll> visited(1001);
vector<ll> parent(1001);
ll t, n, cnt;
void dfs() {
//memset(visited, 0, sizeof(visited));
ll i, j, currDepth = 0;
for(i=1; i<=n; i++) {
for(auto j : graph[i]) {
if(visited[j] == 0) {
depth[j] = currDepth;
visited[j] = 1;
parent[j] = i;
}
}
currDepth++;
}
}
ll lca(ll a, ll b) {
ll diff = (depth[a] > depth[b]) ? (depth[a]-depth[b]) : (depth[b]-depth[a]);
/*
ll x = (depth[a] > depth[b]) ? a : b;
ll y = (depth[a] > depth[b]) ? b : a;
*/
while(diff > 0) {
if(depth[a] > depth[b])
a = parent[a];
else if(depth[a] < depth[b])
b = parent[b];
diff--;
}
if(a == b)
return a;
while(parent[a] != parent[b]) {
a = parent[a];
b = parent[b];
}
return parent[a];
}
void solve() {
ll m, q, i, j, x, y;
cin >> n;
for(i=1; i<=n; i++) {
cin >> m;
for(j=0; j<m; j++) {
cin >> x;
graph[i].push_back(x);
}
}
cin >> q;
dfs();
parent[1] = 1;
cout << "Case " << (cnt+1) << ":\n";
for(i=1; i<=q; i++) {
cin >> x >> y;
cout << lca(x, y) << endl;
}
/*
for(i=1; i<=n; i++) {
for(auto j : graph[i]) {
cout << j << " ";
}
cout << "\n";
}
*/
/*
for(i=1; i<=n; i++) {
cout << parent[i] << " " << depth[i] << endl;
}
*/
}
int main() {
cin >> t;
for(cnt=0; cnt<t; cnt++)
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8bGw+IGdyYXBoWzEwMDFdOwp2ZWN0b3I8bGw+IGRlcHRoKDEwMDEpOwp2ZWN0b3I8bGw+IHZpc2l0ZWQoMTAwMSk7CnZlY3RvcjxsbD4gcGFyZW50KDEwMDEpOwpsbCB0LCBuLCBjbnQ7Cgp2b2lkIGRmcygpIHsKICAgIC8vbWVtc2V0KHZpc2l0ZWQsIDAsIHNpemVvZih2aXNpdGVkKSk7CiAgICBsbCBpLCBqLCBjdXJyRGVwdGggPSAwOwogICAgCiAgICBmb3IoaT0xOyBpPD1uOyBpKyspIHsKICAgICAgICBmb3IoYXV0byBqIDogZ3JhcGhbaV0pIHsKICAgICAgICAgICAgaWYodmlzaXRlZFtqXSA9PSAwKSB7CiAgICAgICAgICAgICAgICBkZXB0aFtqXSA9IGN1cnJEZXB0aDsKICAgICAgICAgICAgICAgIHZpc2l0ZWRbal0gPSAxOwogICAgICAgICAgICAgICAgcGFyZW50W2pdID0gaTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjdXJyRGVwdGgrKzsKICAgIH0KfQoKbGwgbGNhKGxsIGEsIGxsIGIpIHsKICAgIAogICAgCiAgICBsbCBkaWZmID0gKGRlcHRoW2FdID4gZGVwdGhbYl0pID8gKGRlcHRoW2FdLWRlcHRoW2JdKSA6IChkZXB0aFtiXS1kZXB0aFthXSk7IAoKLyogICAgCiAgICBsbCB4ID0gKGRlcHRoW2FdID4gZGVwdGhbYl0pID8gYSA6IGI7CiAgICBsbCB5ID0gKGRlcHRoW2FdID4gZGVwdGhbYl0pID8gYiA6IGE7CiovCgogICAgd2hpbGUoZGlmZiA+IDApIHsKICAgICAgICAKICAgICAgICBpZihkZXB0aFthXSA+IGRlcHRoW2JdKQogICAgICAgICAgICBhID0gcGFyZW50W2FdOwogICAgICAgIGVsc2UgaWYoZGVwdGhbYV0gPCBkZXB0aFtiXSkKICAgICAgICAgICAgYiA9IHBhcmVudFtiXTsKICAgICAgICBkaWZmLS07CiAgICB9CiAgICBpZihhID09IGIpCiAgICAgICAgcmV0dXJuIGE7CiAgICAKICAgIHdoaWxlKHBhcmVudFthXSAhPSBwYXJlbnRbYl0pIHsKICAgICAgICBhID0gcGFyZW50W2FdOwogICAgICAgIGIgPSBwYXJlbnRbYl07CiAgICB9CiAgICByZXR1cm4gcGFyZW50W2FdOwp9Cgp2b2lkIHNvbHZlKCkgewoJbGwgbSwgcSwgaSwgaiwgeCwgeTsKCQoJY2luID4+IG47CgkKCWZvcihpPTE7IGk8PW47IGkrKykgewoJCWNpbiA+PiBtOwoJCWZvcihqPTA7IGo8bTsgaisrKSB7CgkJCWNpbiA+PiB4OwoJCQlncmFwaFtpXS5wdXNoX2JhY2soeCk7CgkJfQoJfQoJCgljaW4gPj4gcTsKCQoJZGZzKCk7CglwYXJlbnRbMV0gPSAxOwoJY291dCA8PCAiQ2FzZSAiIDw8IChjbnQrMSkgPDwgIjpcbiI7Cglmb3IoaT0xOyBpPD1xOyBpKyspIHsKCQljaW4gPj4geCA+PiB5OwoJCWNvdXQgPDwgbGNhKHgsIHkpIDw8IGVuZGw7Cgl9Ci8qCQoJZm9yKGk9MTsgaTw9bjsgaSsrKSB7CgkJZm9yKGF1dG8gaiA6IGdyYXBoW2ldKSB7CgkJCWNvdXQgPDwgaiA8PCAiICI7CgkJfQoJCWNvdXQgPDwgIlxuIjsKCX0KKi8KICAgIC8qCiAgICBmb3IoaT0xOyBpPD1uOyBpKyspIHsKICAgICAgICBjb3V0IDw8IHBhcmVudFtpXSA8PCAiICIgPDwgZGVwdGhbaV0gPDwgZW5kbDsKICAgIH0KICAgICovCn0KCmludCBtYWluKCkgewoJCgljaW4gPj4gdDsKCQoJZm9yKGNudD0wOyBjbnQ8dDsgY250KyspCgkJc29sdmUoKTsKCQkKCXJldHVybiAwOwp9