#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+5,Log=23;
int n,q,anc[N][Log],mx[N][Log],level[N];vector<pair<int,int>>adj[N];
void Build(int node,int parent,int cost)
{
level[node]=level[parent]+1;
mx[node][0]=cost;
anc[node][0]=parent;
for(int i=1;i<Log;i++)
{
int p=anc[node][i-1];
mx[node][i]=max(mx[p][i-1],mx[node][i-1]);
anc[node][i]=anc[p][i-1];
}
for(auto [a,b]:adj[node])
{
if(a!=parent)
{
Build(a,node,b);
}
}
}
int kth(int node,int k)
{
for(int i=Log-1;i>=0;i--)
{
if((k>>i)&1)
{
node=anc[node][i];
}
}
return node;
}
int MX(int node,int k)
{
int ret=0;
for(int i=Log-1;i>=0;i--)
{
if((k>>i)&1)
{
ret=max(ret,mx[node][i]);
node=anc[node][i];
}
}
return ret;
}
int LCA(int a,int b)
{
if(level[a]<level[b]) swap(a,b);
a=kth(a,level[a]-level[b]);
if(a==b) return a;
for(int i=Log-1;i>=0;i--)
{
if(anc[a][i]!=anc[b][i])
{
a=anc[a][i];
b=anc[b][i];
}
}
return anc[a][0];
}
int get(int a,int b)
{
int lca=LCA(a,b);
a=MX(a,level[a]-level[lca]);
b=MX(b,level[b]-level[lca]);
return max(a,b);
}
int dis(int a,int b)
{
int lca=LCA(a,b);
return level[a]+level[b]-2*level[lca];
}
void clear()
{
for(int i=0;i<=n;i++)
{
adj[i].clear();
memset(anc[i],0,sizeof anc[i]);
memset(mx[i],0,sizeof mx[i]);
}
}
signed main()
{
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
while(cin>>n)
{
if(n==0) return 0;
clear();
for(int i=2;i<=n;i++)
{
int a,b,c;cin>>a>>b>>c;
adj[a].push_back({b,c});
adj[b].push_back({a,c});
}
Build(1,0,0);
cin>>q;while(q--)
{
int a,b;cin>>a>>b;
cout<<get(a,b)<<'\n';
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBsbCBsb25nIGxvbmcKY29uc3QgaW50IE49MWU1KzUsTG9nPTIzOwppbnQgbixxLGFuY1tOXVtMb2ddLG14W05dW0xvZ10sbGV2ZWxbTl07dmVjdG9yPHBhaXI8aW50LGludD4+YWRqW05dOwp2b2lkIEJ1aWxkKGludCBub2RlLGludCBwYXJlbnQsaW50IGNvc3QpCnsKICAgIGxldmVsW25vZGVdPWxldmVsW3BhcmVudF0rMTsKICAgIG14W25vZGVdWzBdPWNvc3Q7CiAgICBhbmNbbm9kZV1bMF09cGFyZW50OwogICAgZm9yKGludCBpPTE7aTxMb2c7aSsrKQogICAgewogICAgICAgIGludCBwPWFuY1tub2RlXVtpLTFdOwogICAgICAgIG14W25vZGVdW2ldPW1heChteFtwXVtpLTFdLG14W25vZGVdW2ktMV0pOwogICAgICAgIGFuY1tub2RlXVtpXT1hbmNbcF1baS0xXTsKICAgIH0KICAgIGZvcihhdXRvIFthLGJdOmFkaltub2RlXSkKICAgIHsKICAgICAgICBpZihhIT1wYXJlbnQpCiAgICAgICAgewogICAgICAgICAgICBCdWlsZChhLG5vZGUsYik7CiAgICAgICAgfQogICAgfQp9CmludCBrdGgoaW50IG5vZGUsaW50IGspCnsKICAgIGZvcihpbnQgaT1Mb2ctMTtpPj0wO2ktLSkKICAgIHsKICAgICAgICBpZigoaz4+aSkmMSkKICAgICAgICB7CiAgICAgICAgICAgIG5vZGU9YW5jW25vZGVdW2ldOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBub2RlOwp9CmludCBNWChpbnQgbm9kZSxpbnQgaykKewogICAgaW50IHJldD0wOwogICAgZm9yKGludCBpPUxvZy0xO2k+PTA7aS0tKQogICAgewogICAgICAgIGlmKChrPj5pKSYxKQogICAgICAgIHsKICAgICAgICAgICAgcmV0PW1heChyZXQsbXhbbm9kZV1baV0pOwogICAgICAgICAgICBub2RlPWFuY1tub2RlXVtpXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmV0Owp9CmludCBMQ0EoaW50IGEsaW50IGIpCnsKICAgIGlmKGxldmVsW2FdPGxldmVsW2JdKSBzd2FwKGEsYik7CiAgICBhPWt0aChhLGxldmVsW2FdLWxldmVsW2JdKTsKICAgIGlmKGE9PWIpIHJldHVybiBhOwogICAgZm9yKGludCBpPUxvZy0xO2k+PTA7aS0tKQogICAgewogICAgICAgIGlmKGFuY1thXVtpXSE9YW5jW2JdW2ldKQogICAgICAgIHsKICAgICAgICAgICAgYT1hbmNbYV1baV07CiAgICAgICAgICAgIGI9YW5jW2JdW2ldOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhbmNbYV1bMF07Cn0KaW50IGdldChpbnQgYSxpbnQgYikKewogICAgaW50IGxjYT1MQ0EoYSxiKTsKICAgIGE9TVgoYSxsZXZlbFthXS1sZXZlbFtsY2FdKTsKICAgIGI9TVgoYixsZXZlbFtiXS1sZXZlbFtsY2FdKTsKICAgIHJldHVybiBtYXgoYSxiKTsKfQppbnQgZGlzKGludCBhLGludCBiKQp7CiAgICBpbnQgbGNhPUxDQShhLGIpOwogICAgcmV0dXJuIGxldmVsW2FdK2xldmVsW2JdLTIqbGV2ZWxbbGNhXTsKfQp2b2lkIGNsZWFyKCkKewoJZm9yKGludCBpPTA7aTw9bjtpKyspCgl7CgkJYWRqW2ldLmNsZWFyKCk7CgkJbWVtc2V0KGFuY1tpXSwwLHNpemVvZiBhbmNbaV0pOwoJCW1lbXNldChteFtpXSwwLHNpemVvZiBteFtpXSk7Cgl9Cn0Kc2lnbmVkIG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiAgICB3aGlsZShjaW4+Pm4pCiAgICB7CiAgICAgICAgaWYobj09MCkgcmV0dXJuIDA7CiAgICAgICAgY2xlYXIoKTsKICAgICAgICBmb3IoaW50IGk9MjtpPD1uO2krKykKICAgICAgICB7CiAgICAgICAgICAgIGludCBhLGIsYztjaW4+PmE+PmI+PmM7CiAgICAgICAgICAgIGFkalthXS5wdXNoX2JhY2soe2IsY30pOwogICAgICAgICAgICBhZGpbYl0ucHVzaF9iYWNrKHthLGN9KTsKICAgICAgICB9CiAgICAgICAgQnVpbGQoMSwwLDApOwogICAgICAgIGNpbj4+cTt3aGlsZShxLS0pCiAgICAgICAgewogICAgICAgICAgICBpbnQgYSxiO2Npbj4+YT4+YjsKICAgICAgICAgICAgY291dDw8Z2V0KGEsYik8PCdcbic7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0=