#include<bits/stdc++.h>
using namespace std;
int n;
vector<int> ed[500005];
int fa[500005][18];
int dep[500005];
void dfs(int s,int la,int d)
{
fa[s][0]=la;
dep[s]=d;
for(int i=1;i<=log2(dep[s]);i++)
{
fa[s][i]=fa[fa[s][i-1]][i-1];
}
for(int i=0;i<ed[s].size();i++)
{
if(ed[s][i]==la) continue;
dfs(ed[s][i],s,d+1);
}
}
int lca(int a,int b)
{
if(dep[a]<dep[b])
swap(a,b);
while(dep[a]>dep[b])
{
int u=dep[a]-dep[b];
a=fa[a][int(log2(u))];
}
if(a==b)
return a;
for(int k=log2(dep[a])-1;k>=0;k--)
{
if(fa[a][k]!=fa[b][k])
{
a=fa[a][k];
b=fa[b][k];
}
}
return fa[a][0];
}
int main()
{
int m,s;
cin>>n>>m>>s;
for(int i=1;i<n;i++)
{
int x,y;
cin>>x>>y;
ed[x].push_back(y);
ed[y].push_back(x);
}
dfs(s,0,0);
while(m--)
{
int a,b;
cin>>a>>b;
cout<<lca(a,b)<<endl;
}
return 0;
}