#poj1330 Nearest Common Ancestors P(LCA)
###传送门:http://poj.org/problem?id=1330
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int N = 1e4 + 10;
int _,n;
int dfn[N],du[N],pre[N][30],lg[N];
vector<int>q[N];
void init()
{
for(int i = 0; i <= n + 5; i++){
q[i].clear();
dfn[i] = 0;
du[i] = 0;
}
memset(pre,0,sizeof pre);
}
void dfs(int u,int fa)
{
dfn[u] = dfn[fa] + 1;
pre[u][0] = fa;
for(int i = 1; (1 << i) <= dfn[u]; ++i)
pre[u][i] = pre[pre[u][i - 1]][i - 1];
for(int j = 0; j < q[u].size(); j++){
int v = q[u][j];
if(v != fa)dfs(v,u);
}
}
int lca(int x,int y)
{
if(dfn[x] < dfn[y])swap(x,y);
while(dfn[x] > dfn[y])
x = pre[x][lg[dfn[x] - dfn[y]] - 1];
if(x == y)return x;
for(int k = lg[dfn[x]]; k >= 0; --k)
if(pre[x][k] != pre[y][k])
x = pre[x][k],y = pre[y][k];
return pre[x][0];
}
int main()
{
int _;
cin >> _;
for(int i = 1; i < N; i++)lg[i] = lg[i - 1] + (1 << lg[i - 1] == i);
while(_--){
init();
cin >> n;
for(int i = 1; i < n; i++){
int a,b;
cin >> a >> b;
q[a].push_back(b);
du[b]++;
}
for(int i = 1; i <= n; ++i){
if(du[i] == 0){
dfs(i,0);
break;
}
}
int x,y;
cin >> x >> y;
cout << lca(x,y) << endl;
}
return 0;
}