#include<bits/stdc++.h>

using namespace std;

const int N = 5e5 + 5;

int n, m, r;
int fa[N][20], d[N];

vector<int> e[N];

inline void build(int x, int f) {
    fa[x][0] = f;
    d[x] = d[f] + 1;
    for(int i = 1; i < 20; i++) fa[x][i] = fa[fa[x][i-1]][i-1];
    for(int i : e[x]) {
        if(i == f) continue;
        build(i, x);
    }
}

inline int lca(int x, int y) {
    if(d[y] < d[x]) swap(x, y);
    int tmp = d[y] - d[x];
    for(int i = 19; i >= 0; i--) {
        if(tmp >= (1 << i)) {
            tmp -= (1 << i);
            y = fa[y][i];
        }
    }
    if(x == y) return x;
    for(int i = 19; i >= 0; i--) {
        if(fa[x][i] != fa[y][i]) {
            x = fa[x][i];
            y = fa[y][i];
        }
    }
    return fa[x][0];
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>n>>m>>r;
    for(int i = 1; i < n; i++) {
        int x, y;
        cin>>x>>y;
        e[x].push_back(y);
        e[y].push_back(x);
    }
    build(r, 0);
    for(int i = 1; i <= m; i++) {
        int a, b;
        cin>>a>>b;
        cout<<lca(a, b)<<'\n';
    }
    return 0;
}