#include using namespace std; #define int long long #define rep(i,n) for(int i=0;i<(n);i++) #define pb push_back #define all(v) (v).begin(),(v).end() #define fi first #define se second typedef vectorvint; typedef pairpint; typedef vectorvpint; templateinline void chmin(A &a,B b){if(a>b)a=b;} templateinline void chmax(A &a,B b){if(adat; BinaryIndexedTree(int n=0):n(n){ dat.resize(n+1); } void add(int k,int x){ for(k++;k<=n;k+=k&-k)dat[k]+=x; } int sum(int k){ int ret=0; for(k++;k;k-=k&-k)ret+=dat[k]; return ret; } }; signed main(){ scanf("%lld",&N); rep(i,N-1){ int a,b,c; scanf("%lld%lld%lld",&a,&b,&c); G[a].pb({b,c}); } dfs(0,-1,0,0); BinaryIndexedTree bit0(111111),bit1(111111); int Q;scanf("%lld",&Q); while(Q--){ int t;scanf("%lld",&t); if(t==1){ int a,x; scanf("%lld%lld",&a,&x); bit1.add(tin[a],x);bit1.add(tout[a],-x); bit0.add(tin[a],-dep[a]*x);bit0.add(tout[a],dep[a]*x); } else{ int b;scanf("%lld",&b); int ans=dist[b]; ans+=bit0.sum(tin[b]); ans+=bit1.sum(tin[b])*dep[b]; printf("%lld\n",ans); } } return 0; }