rt
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=1e9+7;
int n,m,s,a,b,f[500005][22];
int head[1000005],nxt[1000005],to[1000005],dep[500005],cnt;
void add(int U,int V){
nxt[++cnt]=head[U];to[cnt]=V;head[U]=cnt;
nxt[++cnt]=head[V];to[cnt]=U;head[V]=cnt;
return;
}
void dfs(int x,int fa){
dep[x]=dep[fa]+1;f[x][0]=fa;
for(int i=1;(1<<i)<=dep[x];i++)
f[x][i]=f[f[x][i-1]][i-1];
for(int i=head[x];i;i=nxt[i])
if(to[i]!=fa)dfs(to[i],x);
return;
}
int LCA(int A,int B){
if(dep[A]>dep[B])swap(A,B);
for(int i=20;i>=0;i--)
if(dep[A]<=dep[B]-(1<<i))
B=f[B][i];
if(A==B)return A;
for(int i=22;i>=0;i--)
if(f[a][i]!=f[b][i])
A=f[A][i],B=f[B][i];
return f[A][0];
}
int main(){
int n,m,s;
cin>>n>>m>>s;
for(int i=1;i<=n-1;i++)
cin>>a>>b,add(a,b);
dfs(s,0);
while(m--){
cin>>a>>b;
cout<<LCA(a,b)<<endl;
}
return 0;
}