#include <bits/stdc++.h>
using namespace std;
int n,m,s,x,y,a,b,fa[500100][20],dep[500100];
vector<int> e[500100];
void dfs(int now,int last){
dep[now]=dep[last]+1;
fa[now][0]=last;
for(auto t:e[now]){
if(t!=last){
dfs(t,now);
}
}
}
int lca(int a,int b){
if(dep[a]<dep[b])swap(a,b);
if(ab)return a;
if(as)return a;
if(bs)return b;
for(int i=19;i>=0;i--){
if(dep[fa[a][i]]>=dep[b])a=fa[a][i];
}
if(ab)return a;
for(int i=19;i>=0;i--){
if(fa[a][i]!=fa[b][i])a=fa[a][i],b=fa[b][i];
}
return fa[a][0];
}
int main(){
cin >> n >> m >> s;
for(int i=1;i<n;i++){
cin >> x >> y;
e[x].push_back(y);
e[y].push_back(x);
}
dfs(s,0);
for(int j=1;j<=19;j++){
for(int i=1;i<=n;i++){
fa[i][j]=fa[fa[i][j-1]][j-1];
}
}
for(int i=1;i<=m;i++){
cin >> a >> b;
cout << lca(a,b) << endl;
}
return 0;
}