#include #include #include #include #include #include #include #include using namespace std; #define N 100005 struct res { int i,x; }; struct pt { int p,v; }; struct que { int x,y,ans; }; vector a[N]; vector query; vector hasq[N]; stack stk; multiset v; multiset::iterator it; bool instack[N]; int iv[N]; int main(int argc, char** argv) { int tcase,i,j,n,q,x,y,w; scanf("%d",&tcase); while(tcase--) { scanf("%d",&n); for(i=1;i<=n;i++) a[i].clear(); iv[1]=-1; for(i=1;i<=n-1;i++) { scanf("%d%d%d",&x,&y,&w); iv[y]=w; pt temp; temp.p=y; temp.v=w; a[x].push_back(temp); temp.p=x; temp.v=w; a[y].push_back(temp); } scanf("%d",&q); for(i=1;i<=n;i++) hasq[i].clear(); for(i=1;i<=q;i++) query.clear(); for(i=1;i<=q;i++) { scanf("%d%d",&x,&y); que temp; temp.x=x; temp.y=y; temp.ans=-1; query.push_back(temp); hasq[x].push_back(query.size()-1); } v.clear(); v.insert(-1); v.insert(-1); v.insert(-1); while(!stk.empty()) stk.pop(); memset(instack,0,sizeof(instack)); res temp; temp.x=1; temp.i=0; instack[1]=1; stk.push(temp); while(!stk.empty()) { res now=stk.top(); stk.pop(); if (now.i==0) { if (hasq[now.x].size()>0) for(int i=0;i