#include<bits/stdc++.h>
using namespace std;
vector<int>g[500005];
int anc[500005][35],de[500005];
void dfs(int x,int fa)
{
de[x] = de[fa]+1;
anc[x][0] = fa;
for(int i=1;i<=19;i++)
anc[x][i] = anc[anc[x][i-1]][i-1];
for(int e:g[x])
if(e!=fa)dfs(e,x);
return;
}
int lca(int x,int y)
{
if(de[x]<de[y])swap(x,y);
for(int i=19;i>=0;i--)
if(de[anc[x][i]]>=de[y])
x = anc[x][i];
if(x==y)return x;
for(int i=19;i>=0;i--)
if(de[anc[x][i]]!=de[anc[y][i]])
x = de[anc[x][i]],y = de[anc[y][i]];
return anc[x][0];
}
int main()
{
int n,m,s;
cin>>n>>m>>s;
for(int i=1;i<n;i++)
{
int x,y;
cin>>x>>y;
if(x!=y)
{
g[y].push_back(x);
g[x].push_back(y);
}
}
dfs(s,0);
for(int i=1;i<=m;i++)
{
int a,b;
cout<<lca(a,b)<<endl;
}
return 0;
}