#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=1e6+5;
int n,m,q;
bool vis[maxn];
struct node{
vector<int>e;
long long bl=0,f,chf;
}v[maxn];
inline void cf(int x){
vis[x]=1;
for(auto i:v[x].e){
if(vis[i])continue;
v[i].f=x,v[i].chf=v[i].bl-v[x].bl;
cf(i);
}
v[x].bl=0;
return;
}
inline void hy(int x){
vis[x]=0;
for(auto i:v[x].e){
if(vis[i])v[i].chf+=v[x].chf,hy(i);
}
return;
}
signed main(){
cin>>n;
for(int i=1,a;i<=n;++i)cin>>v[i].bl;
for(int i=1,x,y;i<n;++i){
cin>>x>>y;
v[x].e.push_back(y);v[y].e.push_back(x);
}
v[1].chf=v[1].bl;
cf(1);
cin>>m;
for(int i=1,p,x,y;i<=m;++i){
cin>>p>>x>>y;
if(p-1){ v[x].bl+=y;for(auto i:v[x].e){ v[i].bl+=y; } }
else{ v[x].chf+=y; }
}
hy(1);
cin>>q;
for(int i=1,x;i<=q;++i){cin>>x;cout<<v[x].chf+v[x].bl<<"\n";}
return 0;
}