#include<bits/stdc++.h>
using namespace std;
int tot,n,m,s,ver[2*5000010],head[2*500010],nxt[2*500010],f[500010][30],d[500010];
void add(int x,int y){
ver[++tot]=y;
nxt[tot]=head[x];
head[x]=tot;
}
void dfs(int u,int fa){
d[u]=d[fa]+1;
for(int i=1;(1<<i)<=d[u];i++)
f[u][i]=f[f[u][i-1]][i-1];
for(int i=head[u];i;i=nxt[i]){
int v=ver[i];
if(v==fa) continue;
f[v][0]=u;
dfs(v,u);
}
}
int LCA(int a,int b){
if(d[a]<d[b]) swap(a,b);
for(int i=20;i>=0;i--){
if(d[f[a][i]]>=d[b]) a=f[a][i];
if(a==b) return a;
}
for(int i=20;i>=0;i--)
if(f[a][i]!=f[b][i])
a=f[a][i],b=f[b][i];
return f[a][0];
}
int main(){
cin>>n>>m>>s;
for(int i=1;i<n;i++){
int x,y;
cin>>x>>y;
add(x,y);
add(y,x);
}
dfs(s,0);
while(m--){
int a,b;
cin>>a>>b;
cout<<LCA(a, b)<<endl;
}
return 0;
}