#include using namespace std; int n; int ab[100000][2]; int u[100000]; int m; list lk[100000]; bool visited[100000]; int pr[100000]; int path0[100000]; int path1[100000]; void hoge(int i,int p){ if(!visited[i]){ visited[i]=true; pr[i]=p; for(list::iterator t=lk[i].begin();t!=lk[i].end();++t){ hoge(*t,i); } } } main(){ cin >> n; for(int i=0;i> ab[i][0] >> ab[i][1]; lk[ab[i][0]].push_back(ab[i][1]); lk[ab[i][1]].push_back(ab[i][0]); } for(int i=0;i> u[i]; } hoge(0,-1); int sum=0; cin >> m; for(int i=0;i> a >> b >> c; int l0=0; for(int j=a;j>=0;j=pr[j]){ path0[l0++]=j; } int l1=0; for(int j=b;j>=0;j=pr[j]){ path1[l1++]=j; } while(l0>=0&&l1>=0&&path0[l0]==path1[l1]){ --l0; --l1; } ++l0; while(l0>=0){ sum+=u[path0[l0--]]*c; } while(l1>=0){ sum+=u[path1[l1--]]*c; } } cout << sum << endl; return 0; }