#include <bits/stdc++.h>
#define noSuccess t--
#define int long long
#define pb push_back
#define F first
#define S second
#define Sattar_is_the_best ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define all(s) s.begin(),s.end()
#define yes "YES\n"
#define no "NO\n"
#define sz size
using namespace std;
const int maxn = 100300;
const int mod = 1e9 + 7;
int n;
int c[maxn],a[maxn],pos,dist[maxn];
int tin[maxn],tout[maxn],timer;
vector<pair<int,int>>g[maxn];
void dfs(int v,int pr){
tin[v]=++timer;
a[++pos]=v;
for(auto [to,w] : g[v]){
if(to==pr) continue;
c[to]=c[v]+1;
dfs(to,v);
a[++pos]=v;
}
tout[v]=++timer;
}
pair<int,int> p[maxn],mn[maxn][40];
int lg[maxn];
void build(){
for(int i=2;i<=n*2;i++){
lg[i]=lg[i/2]+1;
}
for(int k=1;k<=20;k++){
for(int i=1;i+(1<<k)-1<=2*n;i++){
mn[i][k]=min(mn[i][k-1],mn[i+(1<<(k-1))][k-1]);
}
}
}
int up(int a,int b){
if(tin[a]<=tin[b] && tout[a]>=tout[b]) return a;
if(tin[b]<=tin[a] && tout[b]>=tout[a]) return b;
return -1;
}
int lca(int a,int b){
if(up(a,b)!=-1) return up(a,b);
int l=tout[a],r=tin[b];
if(l>r) l=tout[b],r=tin[a];
int k=lg[r-l+1];
auto ans=min(mn[l][k],mn[r-(1<<k)+1][k]);
return ans.S;
}
void tryAgain(){
cin>>n;
for(int i=1;i<=n-1;i++){
int u,v,w;
cin>>u>>v>>w;
g[u].pb({v,w});
g[v].pb({u,w});
}
dfs(1,1);
for(int i=1;i<=2*n;i++){
mn[i][0]={c[a[i]],a[i]};
}
build();
int q;
cin>>q;
while(q--){
int a,b;
cin>>a>>b;
cout<<lca(a,b)<<'\n';
}
}
signed main(){
Sattar_is_the_best
// freopen("length.in", "r", stdin);
// freopen("length.out", "w", stdout);
int t = 1;
// cin >> t;
while(noSuccess){
tryAgain();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbm9TdWNjZXNzIHQtLQojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBwYiBwdXNoX2JhY2sgCiNkZWZpbmUgRiBmaXJzdAkKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIFNhdHRhcl9pc190aGVfYmVzdCBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiNkZWZpbmUgYWxsKHMpIHMuYmVnaW4oKSxzLmVuZCgpCiNkZWZpbmUgeWVzICJZRVNcbiIKI2RlZmluZSBubyAiTk9cbiIKI2RlZmluZSBzeiBzaXplCiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IG1heG4gPSAxMDAzMDA7CmNvbnN0IGludCBtb2QgPSAxZTkgKyA3OwppbnQgbjsKaW50IGNbbWF4bl0sYVttYXhuXSxwb3MsZGlzdFttYXhuXTsKaW50IHRpblttYXhuXSx0b3V0W21heG5dLHRpbWVyOwp2ZWN0b3I8cGFpcjxpbnQsaW50Pj5nW21heG5dOwp2b2lkIGRmcyhpbnQgdixpbnQgcHIpewogIHRpblt2XT0rK3RpbWVyOwogIGFbKytwb3NdPXY7CiAgZm9yKGF1dG8gW3RvLHddIDogZ1t2XSl7CiAgICBpZih0bz09cHIpIGNvbnRpbnVlOwogICAgY1t0b109Y1t2XSsxOwogICAgZGZzKHRvLHYpOwogICAgYVsrK3Bvc109djsKICB9CiAgdG91dFt2XT0rK3RpbWVyOwp9CnBhaXI8aW50LGludD4gcFttYXhuXSxtblttYXhuXVs0MF07CmludCBsZ1ttYXhuXTsKdm9pZCBidWlsZCgpewogIGZvcihpbnQgaT0yO2k8PW4qMjtpKyspewogICAgbGdbaV09bGdbaS8yXSsxOwogIH0KICBmb3IoaW50IGs9MTtrPD0yMDtrKyspewogICAgZm9yKGludCBpPTE7aSsoMTw8ayktMTw9MipuO2krKyl7CiAgICAgIG1uW2ldW2tdPW1pbihtbltpXVtrLTFdLG1uW2krKDE8PChrLTEpKV1bay0xXSk7CiAgICB9CiAgfQp9CmludCB1cChpbnQgYSxpbnQgYil7CiAgaWYodGluW2FdPD10aW5bYl0gJiYgdG91dFthXT49dG91dFtiXSkgcmV0dXJuIGE7CiAgaWYodGluW2JdPD10aW5bYV0gJiYgdG91dFtiXT49dG91dFthXSkgcmV0dXJuIGI7CiAgcmV0dXJuIC0xOwp9CmludCBsY2EoaW50IGEsaW50IGIpewogIGlmKHVwKGEsYikhPS0xKSByZXR1cm4gdXAoYSxiKTsgCiAgaW50IGw9dG91dFthXSxyPXRpbltiXTsKICBpZihsPnIpIGw9dG91dFtiXSxyPXRpblthXTsKICBpbnQgaz1sZ1tyLWwrMV07CiAgYXV0byBhbnM9bWluKG1uW2xdW2tdLG1uW3ItKDE8PGspKzFdW2tdKTsKICByZXR1cm4gYW5zLlM7Cn0Kdm9pZCB0cnlBZ2FpbigpewogIGNpbj4+bjsKICBmb3IoaW50IGk9MTtpPD1uLTE7aSsrKXsKICAgIGludCB1LHYsdzsKICAgIGNpbj4+dT4+dj4+dzsKICAgIGdbdV0ucGIoe3Ysd30pOwogICAgZ1t2XS5wYih7dSx3fSk7CiAgfQogIGRmcygxLDEpOwogIGZvcihpbnQgaT0xO2k8PTIqbjtpKyspewogICAgbW5baV1bMF09e2NbYVtpXV0sYVtpXX07CiAgfQogIGJ1aWxkKCk7CiAgaW50IHE7CiAgY2luPj5xOwogIHdoaWxlKHEtLSl7CiAgICBpbnQgYSxiOwogICAgY2luPj5hPj5iOwogICAgY291dDw8bGNhKGEsYik8PCdcbic7CiAgfQp9CnNpZ25lZCBtYWluKCl7CiAgU2F0dGFyX2lzX3RoZV9iZXN0CiAgLy8gZnJlb3BlbigibGVuZ3RoLmluIiwgInIiLCBzdGRpbik7CiAgLy8gZnJlb3BlbigibGVuZ3RoLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICBpbnQgdCA9IDE7CiAgLy8gY2luID4+IHQ7CiAgd2hpbGUobm9TdWNjZXNzKXsKICAgIHRyeUFnYWluKCk7CiAgfQp9