/** SPOJ Problem - LCA **/
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mod 1000000009
using namespace std;
ll n, a, b, q;
vector<ll> tree[1001];
const ll maxN = 20;
ll level[1001], LCA[1001][maxN + 1];
void dfs(ll node, ll lvl, ll par){
level[node] = lvl;
LCA[node][0] = par;
for(auto child : tree[node]){
if(child != par){
dfs(child, lvl + 1, node);
}
}
}
void init(ll node){
for(ll i = 1; i <= n; i++){
for(ll j = 0; j <= maxN; j++){
LCA[i][j] = -1;
}
}
dfs(1, 0, -1);
for(ll i = 1; i <= maxN; i++){
for(ll j = 1; j <= node; j++){
if(LCA[j][i - 1] != -1){
ll par = LCA[j][i - 1];
LCA[j][i] = LCA[par][i - 1];
}
}
}
}
ll getLCA(ll a, ll b){
if(level[a] > level[b])
swap(a, b);
ll d = level[b] - level[a];
while(d > 0){
ll i = log2(d);
b = LCA[b][i];
d -= (1 << i);
}
if(a == b)
return a;
for(ll i = maxN; i >= 0; i--){
if(LCA[a][i] != -1 && LCA[a][i] != LCA[b][i]){
a = LCA[a][i];
b = LCA[b][i];
}
}
return LCA[a][0];
}
int main() {
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
ll t;
cin >> t;
for(ll tc = 1; tc <= t; tc++){
cout << "Case " << tc << ":\n";
cin >> n;
ll m, node;
for(ll i = 1; i <= n; i++){
cin >> m;
for(ll j = 1; j <= m; j++){
cin >> node;
tree[i].pb(node);
}
}
init(n);
cin >> q;
while(q--){
cin >> a >> b;
cout << getLCA(a, b) << "\n";
}
}
return 0;
}
LyoqIFNQT0ogUHJvYmxlbSAtIExDQSAqKi8KCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1vZCAxMDAwMDAwMDA5CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpsbCBuLCBhLCBiLCBxOwp2ZWN0b3I8bGw+IHRyZWVbMTAwMV07CmNvbnN0IGxsIG1heE4gPSAyMDsKbGwgbGV2ZWxbMTAwMV0sIExDQVsxMDAxXVttYXhOICsgMV07ICAKCnZvaWQgZGZzKGxsIG5vZGUsIGxsIGx2bCwgbGwgcGFyKXsKICAgIGxldmVsW25vZGVdID0gbHZsOwogICAgTENBW25vZGVdWzBdID0gcGFyOwoKICAgIGZvcihhdXRvIGNoaWxkIDogdHJlZVtub2RlXSl7CiAgICAgICAgaWYoY2hpbGQgIT0gcGFyKXsKICAgICAgICAgICAgZGZzKGNoaWxkLCBsdmwgKyAxLCBub2RlKTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgaW5pdChsbCBub2RlKXsKICAgIGZvcihsbCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIGZvcihsbCBqID0gMDsgaiA8PSBtYXhOOyBqKyspewogICAgICAgICAgICBMQ0FbaV1bal0gPSAtMTsKICAgICAgICB9CiAgICB9CgogICAgZGZzKDEsIDAsIC0xKTsKCiAgICBmb3IobGwgaSA9IDE7IGkgPD0gbWF4TjsgaSsrKXsKICAgICAgICBmb3IobGwgaiA9IDE7IGogPD0gbm9kZTsgaisrKXsKICAgICAgICAgICAgaWYoTENBW2pdW2kgLSAxXSAhPSAtMSl7CiAgICAgICAgICAgICAgICBsbCBwYXIgPSBMQ0Fbal1baSAtIDFdOwogICAgICAgICAgICAgICAgTENBW2pdW2ldID0gTENBW3Bhcl1baSAtIDFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgpsbCBnZXRMQ0EobGwgYSwgbGwgYil7CiAgICBpZihsZXZlbFthXSA+IGxldmVsW2JdKSAKICAgICAgICBzd2FwKGEsIGIpOwogICAgbGwgZCA9IGxldmVsW2JdIC0gbGV2ZWxbYV07CgogICAgd2hpbGUoZCA+IDApewogICAgICAgIGxsIGkgPSBsb2cyKGQpOwogICAgICAgIGIgPSBMQ0FbYl1baV07CiAgICAgICAgZCAtPSAoMSA8PCBpKTsKICAgIH0KCiAgICBpZihhID09IGIpIAogICAgICAgIHJldHVybiBhOwoKICAgIGZvcihsbCBpID0gbWF4TjsgaSA+PSAwOyBpLS0pewogICAgICAgIGlmKExDQVthXVtpXSAhPSAtMSAmJiBMQ0FbYV1baV0gIT0gTENBW2JdW2ldKXsKICAgICAgICAgICAgYSA9IExDQVthXVtpXTsKICAgICAgICAgICAgYiA9IExDQVtiXVtpXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gTENBW2FdWzBdOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlIDo6IHN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKE5VTEwpOwogICAgCiAgICBsbCB0OwogICAgY2luID4+IHQ7CiAgICBmb3IobGwgdGMgPSAxOyB0YyA8PSB0OyB0YysrKXsKICAgICAgICBjb3V0IDw8ICJDYXNlICIgPDwgdGMgPDwgIjpcbiI7CiAgICAgICAgY2luID4+IG47CiAgICAgICAgbGwgbSwgbm9kZTsKICAgICAgICBmb3IobGwgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICAgICAgY2luID4+IG07CiAgICAgICAgICAgIGZvcihsbCBqID0gMTsgaiA8PSBtOyBqKyspewogICAgICAgICAgICAgICAgY2luID4+IG5vZGU7CiAgICAgICAgICAgICAgICB0cmVlW2ldLnBiKG5vZGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpbml0KG4pOwoKICAgICAgICBjaW4gPj4gcTsKICAgICAgICB3aGlsZShxLS0pewogICAgICAgICAgICBjaW4gPj4gYSA+PiBiOwogICAgICAgICAgICBjb3V0IDw8IGdldExDQShhLCBiKSA8PCAiXG4iOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9