#include<bits/stdc++.h>
#define For(i,x,y) for(int i = x;i<y;i++)
#define _for(i,x,y) for(int i = x;i<=y;i++)
#define pb push_back
using namespace std;
typedef long long ll;
const int N = 5e5 + 10;
int n,m,s;
vector<int> G[N];
int f[N][20];
int dist[N];
int dfs(int u,int fa){
for(auto i:G[u]){
if(i==fa)continue;
dist[i] = dist[u] + 1;
f[i][0] = u;
dfs(i,u);
}
}
void init(){
for(int j = 1;j<=18;j++){
_for(i,1,n)f[i][j] = f[f[i][j-1]][j-1];
}
}
int LCA(int x ,int y){
if(dist[x]>dist[y])swap(x,y);
for(int i = 18;i>=0;i--)
if(dist[f[y][i]]>=dist[x])
y = f[y][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];
return f[x][0];
}
int main(){
cin>>n>>m>>s;
For(i,1,n){
int a,b;cin>>a>>b;
G[a].pb(b),G[b].pb(a);
}
dist[s] = 1;dfs(s,0);/**/
init();
while(m--){
int u,v;
cin>>u>>v;
cout<<LCA(u,v)<<endl;
}
return 0;
}