// ~/BAU/ACM-ICPC/Teams/A++/BlackBurn95
// ~/sudo apt-get Accpeted
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <memory.h>
#include <limits.h>
#include <math.h>
#include <string.h>
#include <string>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N = 100000;
const int l = 16;
int n, dpth[N], dp[l + 1][N];
vector<vector<int> > g;
void dfs(int u, int p) {
dp[0][u] = p;
for(int i=0; i<g[u].size(); i++)
if (g[u][i] != p) {
dpth[g[u][i]] = dpth[u] + 1;
dfs(g[u][i], u);
}
}
int getKthAncestor(int u, int k) {
int d = dpth[u] - k;
for (int j = l; j >= 0; j--) {
int nu = dp[j][u];
if (nu == -1) continue;
if (dpth[nu] == d) return nu;
else if (dpth[nu] > d) u = nu;
}
return -1;
}
int getLCA(int a, int b) {
if (dpth[a] > dpth[b]) a = getKthAncestor(a, dpth[a] - dpth[b]);
else if (dpth[b] > dpth[a]) b = getKthAncestor(b, dpth[b] - dpth[a]);
//dpth[a] == dpth[b]
if (a == b) return a;
for (int j = l; j >= 0; j--) {
int na = dp[j][a], nb = dp[j][b];
if (na != -1 && nb != -1 && na != nb)
a = na, b = nb;
}
return dp[0][a];
}
int main() {
int tc;
scanf("%d", &tc);
for (int c = 1; c <= tc; c++) {
scanf("%d", &n);
g.clear();
g.resize(n);
for (int i = 0; i < n; i++) {
int m, j;
scanf("%d", &m);
while (m--) {
scanf("%d", &j);
j--;
g[i].push_back(j);
g[j].push_back(i);
}
}
memset(dp, -1, sizeof(dp));
dpth[0] = 0;
dfs(0, -1);
for (int j = 1; j <= l; j++)
for (int i = 0; i < n; i++)
dp[j][i] = (dp[j - 1][i] == -1 ? -1 : dp[j - 1][dp[j - 1][i]]);
printf("Case %d:\n", c);
int q;
scanf("%d", &q);
while (q--) {
int a, b;
scanf("%d%d", &a, &b);
a--, b--;
printf("%d\n", getLCA(a, b) + 1);
}
}
return 0;
}
Ci8vIH4vQkFVL0FDTS1JQ1BDL1RlYW1zL0ErKy9CbGFja0J1cm45NQovLyB+L3N1ZG8gYXB0LWdldCBBY2NwZXRlZAogCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPG1lbW9yeS5oPgojaW5jbHVkZSA8bGltaXRzLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1bGw7CiAKY29uc3QgaW50IE4gPSAxMDAwMDA7CmNvbnN0IGludCBsID0gMTY7CmludCBuLCBkcHRoW05dLCBkcFtsICsgMV1bTl07CnZlY3Rvcjx2ZWN0b3I8aW50PiA+IGc7CiAKdm9pZCBkZnMoaW50IHUsIGludCBwKSB7CglkcFswXVt1XSA9IHA7CiAKCWZvcihpbnQgaT0wOyBpPGdbdV0uc2l6ZSgpOyBpKyspCgkJaWYgKGdbdV1baV0gIT0gcCkgewoJCQlkcHRoW2dbdV1baV1dID0gZHB0aFt1XSArIDE7CgkJCWRmcyhnW3VdW2ldLCB1KTsKCQl9Cn0KIAppbnQgZ2V0S3RoQW5jZXN0b3IoaW50IHUsIGludCBrKSB7CglpbnQgZCA9IGRwdGhbdV0gLSBrOwogCglmb3IgKGludCBqID0gbDsgaiA+PSAwOyBqLS0pIHsKCQlpbnQgbnUgPSBkcFtqXVt1XTsKCQlpZiAobnUgPT0gLTEpIGNvbnRpbnVlOwoJCWlmIChkcHRoW251XSA9PSBkKSByZXR1cm4gbnU7CgkJZWxzZSBpZiAoZHB0aFtudV0gPiBkKSB1ID0gbnU7Cgl9CiAKCXJldHVybiAtMTsKfQogCmludCBnZXRMQ0EoaW50IGEsIGludCBiKSB7CglpZiAoZHB0aFthXSA+IGRwdGhbYl0pIGEgPSBnZXRLdGhBbmNlc3RvcihhLCBkcHRoW2FdIC0gZHB0aFtiXSk7CgllbHNlIGlmIChkcHRoW2JdID4gZHB0aFthXSkgYiA9IGdldEt0aEFuY2VzdG9yKGIsIGRwdGhbYl0gLSBkcHRoW2FdKTsKIAoJLy9kcHRoW2FdID09IGRwdGhbYl0KIAoJaWYgKGEgPT0gYikgcmV0dXJuIGE7CiAKCWZvciAoaW50IGogPSBsOyBqID49IDA7IGotLSkgewoJCWludCBuYSA9IGRwW2pdW2FdLCBuYiA9IGRwW2pdW2JdOwogCgkJaWYgKG5hICE9IC0xICYmIG5iICE9IC0xICYmIG5hICE9IG5iKQoJCQlhID0gbmEsIGIgPSBuYjsKCX0KIAoJcmV0dXJuIGRwWzBdW2FdOwp9CiAKaW50IG1haW4oKSB7CglpbnQgdGM7CglzY2FuZigiJWQiLCAmdGMpOwogCglmb3IgKGludCBjID0gMTsgYyA8PSB0YzsgYysrKSB7CgkJc2NhbmYoIiVkIiwgJm4pOwogCgkJZy5jbGVhcigpOwoJCWcucmVzaXplKG4pOwogCgkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQkJaW50IG0sIGo7CgkJCXNjYW5mKCIlZCIsICZtKTsKCQkJd2hpbGUgKG0tLSkgewoJCQkJc2NhbmYoIiVkIiwgJmopOwoJCQkJai0tOwoJCQkJZ1tpXS5wdXNoX2JhY2soaik7CgkJCQlnW2pdLnB1c2hfYmFjayhpKTsKCQkJfQoJCX0KIAoJCW1lbXNldChkcCwgLTEsIHNpemVvZihkcCkpOwogCgkJZHB0aFswXSA9IDA7CgkJZGZzKDAsIC0xKTsKIAoJCWZvciAoaW50IGogPSAxOyBqIDw9IGw7IGorKykKCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkJCQlkcFtqXVtpXSA9IChkcFtqIC0gMV1baV0gPT0gLTEgPyAtMSA6IGRwW2ogLSAxXVtkcFtqIC0gMV1baV1dKTsKIAoJCXByaW50ZigiQ2FzZSAlZDpcbiIsIGMpOwoJCWludCBxOwoJCXNjYW5mKCIlZCIsICZxKTsKCQl3aGlsZSAocS0tKSB7CgkJCWludCBhLCBiOwoJCQlzY2FuZigiJWQlZCIsICZhLCAmYik7CgkJCWEtLSwgYi0tOwogCgkJCXByaW50ZigiJWRcbiIsIGdldExDQShhLCBiKSArIDEpOwoJCX0KCX0KCXJldHVybiAwOwp9IA==