/*  Success may not come to me immediately,
 *  but it will come definitely....
 */
#include<bits/stdc++.h>
//=====================================================================
using namespace std;
//=====================================================================
#define opt ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
//=====================================================================
#define li  	int64_t
#define ld  	double_t
#define ulli    uint64_t
//=====================================================================
#define rep(i,a,b)  for(i=a;i<b;i++)
#define repr(i,a,b) for(i=a;i>b;i--)
#define repi(i,v)   for(i=v.begin();i!=v.end();i++)
#define elif        else if
#define mset(a,b)   memset(a,b,sizeof(a))
#define nl      	cout<<'\n'
//=====================================================================
typedef vector<li>       vli;
typedef vector<string>   vstr;
typedef pair<li,li>      pli;
typedef pair<li,pli >    ppli;
typedef pair<li,ppli >   pppli;
typedef vector<pli >     vpl;
typedef vector<ppli >    vppli;
typedef vector<pppli >   vpppli;
//=====================================================================
#define pb  push_back
#define pob pop_back
#define pf  push_front
#define pof pop_front
#define all(v)  v.begin(),v.end()
#define itr iterator
#define sz  size()
#define lb  lower_bound
#define ub  upper_bound
#define bs  binary_search
#define mp  make_pair
#define F   first
#define S   second
//=====================================================================
#define mod (li)(1e9+7)
#define inf (li)(1e18)
#define MX1 (li)(1e5+5)
#define MX2 (li)(1e6+5)
#define pi  acos(-1)
//=====================================================================
li power(li a,li b){li ans=1;while(b){if(b&1){ans=(ans*a)%mod;}
a=(a*a)%mod;b>>=1;}return ans;}
//=====================================================================
li mmi(li n){return power(n,mod-2);}
//=====================================================================
li two(li n){return (1LL<<n);}
//=====================================================================
void onbit(li &n,li x){n|=two(x);}
//=====================================================================
void offbit(li &n,li x){n&=~two(x);}
//=====================================================================
li cntbit(li n){li res=0;while(n and ++res)n-=n&-n;return res;}
//=====================================================================
li dx[]={-1,0,1,0},dy[]={0,-1,0,1};
//=====================================================================
/*------------------------MAIN CODE BEGINS NOW!------------------------*/

li vis[MX1],tin[MX1],tout[MX1],val[MX1],lvl[MX1],k=17,up[MX1][18],cnt=0,BIT[2*MX1];
vpl g[MX1];

void update(li x,li val){
  for(;x<2*MX1;x+=x&-x){
    BIT[x]+=val;
  }
}

li query(li x){
  li sum=0;
  for(;x>0;x-=x&-x){
    sum+=BIT[x];
  }
  return sum;
}

void dfs(li u,li d){
  li i;
  vis[u]=1;
  tin[u]=++cnt;
  rep(i,1,k+1){
    up[u][i]=up[up[u][i-1]][i-1];
  }
  rep(i,0,g[u].sz){
    li v=g[u][i].F,c=g[u][i].S;
    if(!vis[v]){
      lvl[v]=1+lvl[u];
      up[v][0]=u;
      val[v]=c;
      dfs(v,d+1);
    }
  }
  tout[u]=++cnt;
}

li lca(li u,li v){
  if(lvl[u]>lvl[v]) swap(u,v);
  li i;
  repr(i,17,-1){
    if(lvl[v]-(1LL<<i)>=lvl[u]){
      v=up[v][i];
    }
  }
  if(u==v) return u;
  repr(i,17,-1){
    if(up[u][i]!=up[v][i]){
      u=up[u][i];
      v=up[v][i];
    }
  }
  return up[u][0];
}

void solve(){
  li i,n;cin>>n;
  rep(i,0,n-1){
    li x,y,c;cin>>x>>y>>c;
    g[x].pb(mp(y,c));
    g[y].pb(mp(x,c));
  }
  up[1][0]=1;
  dfs(1,0);
  rep(i,1,n+1){
    update(tin[i],val[i]);
    update(tout[i]+1,-val[i]);
  }
  li q,p;cin>>q>>p;while(q--){
    li x,y;cin>>x>>y;
    li l1=lca(x,p);
    li l2=lca(y,p);
    li d1=query(tin[x])+query(tin[p])-2*query(tin[l1]);
    li d2=query(tin[y])+query(tin[p])-2*query(tin[l2]);
    cout<<d1+d2;nl;
  }
}

int main(){
  opt
  #ifndef ONLINE_JUDGE
//  freopen("input.txt","r",stdin);
//  freopen("output.txt","w",stdout);
  #endif
  li t=1;
  //cin>>t;
  while(t--){
    solve();
  }
  return 0;
}

Measured memory_bytes: 33024