/// vn.spoj.com/problems/LUBENICA/
/// hld+it by muoii
#include <bits/stdc++.h>
using namespace std;
#define tag "spoj"
#define maxn 100007
#define module 0
#define long long long
#define oo 1000000007
#define loop(x) for(int ruuun=0;ruuun<x;ruuun++)
///>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
int n,m;
vector<int> tour,go;
vector<int> id;
vector<int> W;
struct neigh{
int ver,wei;
};
vector< vector<neigh> > adj;
struct nodeTree{
int parent;
int depth;
int subsize;
int chainTop;
};
vector<nodeTree> infor;
#define par(u) infor[u].parent
#define depth(u) infor[u].depth
#define subsize(u) infor[u].subsize
#define chainTop(u) infor[u].chainTop
#define jump(x) par(chainTop(x))
struct query{
int emi,ema;
};
struct it{
int n;
vector<int> qmin,qmax;
#define a(i) qmin[n+i-1]
#define b(i) qmax[n+i-1]
it() {};
it(const int &sz,const vector<int> &a){
n=sz;
qmin.resize(2*n+2); qmax.resize(2*n+2);
for(int i=1;i<=n;i++) a(i)=a[i],b(i)=a[i];
build();
}
void build()
{
for(int i=n-1;i>=1;i--)
qmin[i]=min(qmin[i<<1],qmin[i<<1|1]),
qmax[i]=max(qmax[i<<1],qmax[i<<1|1]);
}
query get(int l,int r)
{
int emi=+oo,ema=-oo;
for(l+=n-1,r+=n;l<r;l>>=1,r>>=1)
{
if(l&1) emi=min(emi,qmin[l]),ema=max(ema,qmax[l]),l++;
if(r&1) --r,emi=min(emi,qmin[r]),ema=max(ema,qmax[r]);
}
return {emi,ema};
}
} st;
void data()
{
adj.resize(n+1);
infor.resize(n+1);
W.resize(n+1);
id.resize(n+1);
tour.resize(1);
}
///--------------
void dfs(const int &u,const int &parent,const int &depth)
{
infor[u]={parent,depth,1};
for(const auto &nei: adj[u])
if(nei.ver!=parent)
W[nei.ver]=nei.wei,dfs(nei.ver,u,depth+1),subsize(u)+=subsize(nei.ver);
}
void hld(const int &u,const int &parent,const int &top)
{
id[u]=tour.size();
tour.push_back(W[u]);
go.push_back(u);
chainTop(u)=top;
int special=0;
for(const auto &nei: adj[u])
special=(nei.ver!=parent && subsize(nei.ver)>subsize(special))?nei.ver:special;
if(special==0) return;
hld(special,u,top);
for(const auto &nei: adj[u])
if(nei.ver!=parent && nei.ver!=special)
hld(nei.ver,u,nei.ver);
}
void lca(int x,int y)
{
query get;
int emi=+oo,ema=-oo;
while(chainTop(x)!=chainTop(y))
if(depth(chainTop(x))>depth(chainTop(y)))
{
get=st.get(id[chainTop(x)],id[x]);
emi=min(emi,get.emi);
ema=max(ema,get.ema);
x=jump(x);
}
else
{
get=st.get(id[chainTop(y)],id[y]);
emi=min(emi,get.emi);
ema=max(ema,get.ema);
y=jump(y);
}
get=(depth(x)<depth(y))?st.get(id[x]+1,id[y]):st.get(id[y]+1,id[x]);
emi=min(emi,get.emi);
ema=max(ema,get.ema);
cout<<emi<<" "<<ema<<"\n";
return;
}
int main()
{
#ifdef dmdd
freopen(tag".inp","r",stdin); freopen(tag".out","w",stdout);
#endif // dmdd
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin>>n;
data();
int u,v,w;
loop(n-1) cin>>u>>v>>w,adj[u].push_back({v,w}),adj[v].push_back({u,w});
///tree&lcawithhld:
dfs(1,0,1);
hld(1,0,1);
st=it(n,tour);
cin>>m;
while(m-->0) cin>>u>>v,lca(u,v);
return 0;
}
Ly8vIHZuLnNwb2ouY29tL3Byb2JsZW1zL0xVQkVOSUNBLwoKLy8vIGhsZCtpdCBieSBtdW9paQoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgdGFnICJzcG9qIgojZGVmaW5lIG1heG4gMTAwMDA3CiNkZWZpbmUgbW9kdWxlIDAKI2RlZmluZSBsb25nIGxvbmcgbG9uZwojZGVmaW5lIG9vIDEwMDAwMDAwMDcKI2RlZmluZSBsb29wKHgpIGZvcihpbnQgcnV1dW49MDtydXV1bjx4O3J1dXVuKyspCi8vLz4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+CmludCBuLG07CnZlY3RvcjxpbnQ+IHRvdXIsZ287CnZlY3RvcjxpbnQ+IGlkOwp2ZWN0b3I8aW50PiBXOwpzdHJ1Y3QgbmVpZ2h7CiAgICBpbnQgdmVyLHdlaTsKfTsKdmVjdG9yPCB2ZWN0b3I8bmVpZ2g+ID4gYWRqOwoKc3RydWN0IG5vZGVUcmVlewogICAgaW50IHBhcmVudDsKICAgIGludCBkZXB0aDsKICAgIGludCBzdWJzaXplOwogICAgaW50IGNoYWluVG9wOwp9Owp2ZWN0b3I8bm9kZVRyZWU+IGluZm9yOwojZGVmaW5lIHBhcih1KSBpbmZvclt1XS5wYXJlbnQKI2RlZmluZSBkZXB0aCh1KSBpbmZvclt1XS5kZXB0aAojZGVmaW5lIHN1YnNpemUodSkgaW5mb3JbdV0uc3Vic2l6ZQojZGVmaW5lIGNoYWluVG9wKHUpIGluZm9yW3VdLmNoYWluVG9wCiNkZWZpbmUganVtcCh4KSBwYXIoY2hhaW5Ub3AoeCkpCgpzdHJ1Y3QgcXVlcnl7CiAgICBpbnQgZW1pLGVtYTsKfTsKc3RydWN0IGl0ewogICAgaW50IG47CiAgICB2ZWN0b3I8aW50PiBxbWluLHFtYXg7CiAgICAjZGVmaW5lIGEoaSkgcW1pbltuK2ktMV0KICAgICNkZWZpbmUgYihpKSBxbWF4W24raS0xXQogICAgaXQoKSB7fTsKICAgIGl0KGNvbnN0IGludCAmc3osY29uc3QgdmVjdG9yPGludD4gJmEpewogICAgICAgIG49c3o7CiAgICAgICAgcW1pbi5yZXNpemUoMipuKzIpOyBxbWF4LnJlc2l6ZSgyKm4rMik7CiAgICAgICAgZm9yKGludCBpPTE7aTw9bjtpKyspIGEoaSk9YVtpXSxiKGkpPWFbaV07CiAgICAgICAgYnVpbGQoKTsKICAgIH0KCiAgICB2b2lkIGJ1aWxkKCkKICAgIHsKICAgICAgICBmb3IoaW50IGk9bi0xO2k+PTE7aS0tKQogICAgICAgICAgICBxbWluW2ldPW1pbihxbWluW2k8PDFdLHFtaW5baTw8MXwxXSksCiAgICAgICAgICAgIHFtYXhbaV09bWF4KHFtYXhbaTw8MV0scW1heFtpPDwxfDFdKTsKICAgIH0KCiAgICBxdWVyeSBnZXQoaW50IGwsaW50IHIpCiAgICB7CiAgICAgICAgaW50IGVtaT0rb28sZW1hPS1vbzsKICAgICAgICBmb3IobCs9bi0xLHIrPW47bDxyO2w+Pj0xLHI+Pj0xKQogICAgICAgIHsKICAgICAgICAgICAgaWYobCYxKSBlbWk9bWluKGVtaSxxbWluW2xdKSxlbWE9bWF4KGVtYSxxbWF4W2xdKSxsKys7CiAgICAgICAgICAgIGlmKHImMSkgLS1yLGVtaT1taW4oZW1pLHFtaW5bcl0pLGVtYT1tYXgoZW1hLHFtYXhbcl0pOwogICAgICAgIH0KICAgICAgICByZXR1cm4ge2VtaSxlbWF9OwogICAgfQp9IHN0OwoKdm9pZCBkYXRhKCkKewogICAgYWRqLnJlc2l6ZShuKzEpOwogICAgaW5mb3IucmVzaXplKG4rMSk7CiAgICBXLnJlc2l6ZShuKzEpOwogICAgaWQucmVzaXplKG4rMSk7CiAgICB0b3VyLnJlc2l6ZSgxKTsKfQoKLy8vLS0tLS0tLS0tLS0tLS0Kdm9pZCBkZnMoY29uc3QgaW50ICZ1LGNvbnN0IGludCAmcGFyZW50LGNvbnN0IGludCAmZGVwdGgpCnsKICAgIGluZm9yW3VdPXtwYXJlbnQsZGVwdGgsMX07CgogICAgZm9yKGNvbnN0IGF1dG8gJm5laTogYWRqW3VdKQogICAgICAgIGlmKG5laS52ZXIhPXBhcmVudCkKICAgICAgICAgICAgV1tuZWkudmVyXT1uZWkud2VpLGRmcyhuZWkudmVyLHUsZGVwdGgrMSksc3Vic2l6ZSh1KSs9c3Vic2l6ZShuZWkudmVyKTsKfQoKdm9pZCBobGQoY29uc3QgaW50ICZ1LGNvbnN0IGludCAmcGFyZW50LGNvbnN0IGludCAmdG9wKQp7CiAgICBpZFt1XT10b3VyLnNpemUoKTsKICAgIHRvdXIucHVzaF9iYWNrKFdbdV0pOwogICAgZ28ucHVzaF9iYWNrKHUpOwogICAgY2hhaW5Ub3AodSk9dG9wOwoKICAgIGludCBzcGVjaWFsPTA7CiAgICBmb3IoY29uc3QgYXV0byAmbmVpOiBhZGpbdV0pCiAgICAgICAgc3BlY2lhbD0obmVpLnZlciE9cGFyZW50ICYmIHN1YnNpemUobmVpLnZlcik+c3Vic2l6ZShzcGVjaWFsKSk/bmVpLnZlcjpzcGVjaWFsOwoKICAgIGlmKHNwZWNpYWw9PTApIHJldHVybjsKCiAgICBobGQoc3BlY2lhbCx1LHRvcCk7CgogICAgZm9yKGNvbnN0IGF1dG8gJm5laTogYWRqW3VdKQogICAgICAgIGlmKG5laS52ZXIhPXBhcmVudCAmJiBuZWkudmVyIT1zcGVjaWFsKQogICAgICAgICAgICBobGQobmVpLnZlcix1LG5laS52ZXIpOwp9Cgp2b2lkIGxjYShpbnQgeCxpbnQgeSkKewogICAgcXVlcnkgZ2V0OwogICAgaW50IGVtaT0rb28sZW1hPS1vbzsKICAgIHdoaWxlKGNoYWluVG9wKHgpIT1jaGFpblRvcCh5KSkKICAgIGlmKGRlcHRoKGNoYWluVG9wKHgpKT5kZXB0aChjaGFpblRvcCh5KSkpCiAgICAgICAgewogICAgICAgICAgICBnZXQ9c3QuZ2V0KGlkW2NoYWluVG9wKHgpXSxpZFt4XSk7CiAgICAgICAgICAgIGVtaT1taW4oZW1pLGdldC5lbWkpOwogICAgICAgICAgICBlbWE9bWF4KGVtYSxnZXQuZW1hKTsKCiAgICAgICAgICAgIHg9anVtcCh4KTsKICAgICAgICB9CiAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBnZXQ9c3QuZ2V0KGlkW2NoYWluVG9wKHkpXSxpZFt5XSk7CiAgICAgICAgICAgIGVtaT1taW4oZW1pLGdldC5lbWkpOwogICAgICAgICAgICBlbWE9bWF4KGVtYSxnZXQuZW1hKTsKCiAgICAgICAgICAgIHk9anVtcCh5KTsKICAgICAgICB9CgogICAgZ2V0PShkZXB0aCh4KTxkZXB0aCh5KSk/c3QuZ2V0KGlkW3hdKzEsaWRbeV0pOnN0LmdldChpZFt5XSsxLGlkW3hdKTsKCiAgICBlbWk9bWluKGVtaSxnZXQuZW1pKTsKICAgIGVtYT1tYXgoZW1hLGdldC5lbWEpOwoKICAgIGNvdXQ8PGVtaTw8IiAiPDxlbWE8PCJcbiI7CiAgICByZXR1cm47Cn0KCmludCBtYWluKCkKewoJI2lmZGVmIGRtZGQKICAgIGZyZW9wZW4odGFnIi5pbnAiLCJyIixzdGRpbik7IGZyZW9wZW4odGFnIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgI2VuZGlmIC8vIGRtZGQKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgIGNpbj4+bjsKICAgIGRhdGEoKTsKCiAgICBpbnQgdSx2LHc7CiAgICBsb29wKG4tMSkgY2luPj51Pj52Pj53LGFkalt1XS5wdXNoX2JhY2soe3Ysd30pLGFkalt2XS5wdXNoX2JhY2soe3Usd30pOwoKICAgIC8vL3RyZWUmbGNhd2l0aGhsZDoKICAgIGRmcygxLDAsMSk7CiAgICBobGQoMSwwLDEpOwogICAgc3Q9aXQobix0b3VyKTsKCiAgICBjaW4+Pm07CiAgICB3aGlsZShtLS0+MCkgY2luPj51Pj52LGxjYSh1LHYpOwogICAgcmV0dXJuIDA7Cn0K