#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+2;
int n,m,b[N],p,x,u,i,y,q,vis[N],d,f[N],add[N];
vector<int>a[N];
void dfs(int u)
{
vis[u]=1;
for(int i=0;i<a[u].size();i++)
{
if(vis[a[u][i]]!=1)
{
dfs(a[u][i]);
}
}
return;
}
signed main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>b[i];
}
for(int i=1;i<=n;i++)
{
cin>>u>>i;
f[i]=u;
a[u].push_back(i);
}
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>p>>x>>y;
if(p==1)
{
memset(vis,0,sizeof(vis));
dfs(x);
for(int j=n;j>=1;j--)
{
if(vis[j]==1)
{
add[j]+=y;
}
}
}
else if(p==2)
{
add[f[x]]+=y;
add[x]+=y;
for(int i=x;i<=n;i++)
{
if(f[i]==x)
{
cout<<"p==2:"<<i<<endl;
add[i]+=y;
}
}
}
}
cin>>q;
for(int i=1;i<=q;i++)
{
cin>>d;
cout<<b[d]+add[d]<<endl;
}
return 0;
}