#include<bits/stdc++.h>
using namespace std;
const int N=1000010;
vector<int >g[N];
int deep[N],n,fa[N],m,s;
void dfs(int x,int f)
{
deep[x]=deep[f]+1;
fa[x]=f;
for(int i=0;i<g[x].size();i++)
{
if(g[x][i]!=f)
{
dfs(g[x][i],x);
}
}
}
int getlca(int x,int y)
{
while(x!=y)
{
if(deep[x]>deep[y])
{
x=fa[x];
}else
{
y=fa[y];
}
}
cout<<x<<endl;
return 0;
}
int main()
{
cin>>n>>m>>s;
for(int i=1;i<n;i++)
{
int u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs(s,0);
for(int i=1;i<=m;i++)
{
int ax,ay;
cin>>ax>>ay;
getlca(ax,ay);
}
}