#include <bits/stdc++.h>
using namespace std;
using edge=struct{int to; long long cost;};
vector<edge> tree[100000];
long long depth[100000];
void dfs(int v, int p, long long d){
    depth[v]=d;
    for(auto &e :tree[v]){
        if(e.to==p) continue;
        dfs(e.to, v, d+e.cost);
    }
    return;
}
int main(){
    int N,Q,K;
    cin>>N;
    for(int i=0;i<N-1;i++){
        int a,b,c;
        cin>>a>>b>>c;
        tree[a-1].push_back({b-1,c});
        tree[b-1].push_back({a-1,c});
    }
    cin>>Q>>K;
    dfs(K-1,-1,0);
    for(int i=0;i<Q;i++){
        int x,y;
        cin>>x>>y;
        cout<<depth[x-1]+depth[y-1]<<endl;
    }
}