#include using namespace std; vectoreg[100010]; vectorwt[100010]; int dep[100010],f[100010][30]; long long sum[100010]; void dfs(int u,int fa) { dep[u]=dep[fa]+1; f[u][0]=fa; for(int i=1;i<=20;i++) { f[u][i]=f[f[u][i-1]][i-1]; } for(int i=0;i=0;i--) { if(dep[f[x][i]]>=dep[y])x=f[x][i]; } if(x==y)return x; for(int i=20;i>=0;i--) { if(f[x][i]!=f[y][i]) { x=f[x][i]; y=f[y][i]; } } return f[x][0]; } int main() { // freopen("lucky.in","r",stdin); // freopen("lucky.out","w",stdout); ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n,q,u,v,x,y,z,lca,lca1,lca2,fa; long long w,ans; cin>>n; for(int i=1;i>u>>v>>w; ++u,++v; eg[u].push_back(v); eg[v].push_back(u); wt[u].push_back(w); wt[v].push_back(w); } dfs(1,0); cin>>q; while(q--) { cin>>x>>y>>z; ++x,++y,++z; if(dep[x]