#include<bits/stdc++.h>
#define maxn 1005
using namespace std;
int n,q,rt,dep[maxn],anc[maxn][18];
vector<int>g[maxn];
void dfs(int u,int f){
for(int i=0;i<g[u].size();i++){
int v=g[u][i];
if(v==f)continue;
dep[v]=dep[u]+1;
anc[v][0]=u;
dfs(v,u);
}
}
void init(){
for(int j=1;j<=18;j++)
for(int i=1;i<=n;i++)
anc[i][j]=anc[anc[i][j-1]][j-1];
}
int queryLCA(int u,int v){
if(dep[u]<dep[v])swap(u,v);
for(int i=18;i>=0;i--)
if(dep[anc[u][i]]>=dep[v])
u=anc[u][i];
if(u==v)return u;
for(int i=18;i>=0;i--)
if(anc[u][i]!=anc[v][i])
u=anc[u][i],v=anc[v][i];
return anc[u][0];
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>q>>rt;
for(int i=1;i<n;i++){
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
dep[rt]=1;
dfs(rt,0);
init();
for(int i=1;i<=q;i++){
int u,v;
cin>>u>>v;
cout<<queryLCA(u,v)<<'\n';
}
return 0;
}