#include<bits/stdc++.h>
using namespace std;
#define MX 500005
namespace iakioi{
vector<int>g[MX];
int d[MX],f[MX][19],n,m,s;
void dfs(int rt,int q,int p){
d[rt]=q;
f[rt][0]=p;
for(int i=0;i<g[rt].size();i++){
int to=g[rt][i];
if(q==to) continue;
dfs(to,q+1,rt);
}
}
int lca(int x,int y){
int ms;
if(d[x]>d[y]) swap(x,y);
for(int i=18;i>=0;i--){
if(d[f[x][i]]>=d[y]) x=f[x][i];
}
if(x==y) return x;
for(int i=18;i>=0;i--){
if(f[x][i]!=f[y][i]) x=f[x][i],y=f[y][i];
else ms=f[x][i];
}
return ms;
}
void main(){
cin.tie(0);
cout.tie(0);
cin>>n>>m>>s;
for(int i=1;i<=n-1;i++){
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs(s,1,0);
for(int j=18;j>=0;j--){
for(int i=1;i<=n;i++){
f[i][j]=f[f[i][j-1]][j-1];
}
}
while(m--){
int a,b;
cin>>a>>b;
cout<<lca(a,b);
}
}
}
int main(){
iakioi::main();
return 0;
}