#include<cstdio>
using namespace std;
int n,m,wt,w[100001],fa[100001],li[100001]; int u,v;//li记录i节点要"加"的值(但并不加,在递归时才带着走)
int update(intx,inty)//y是题目中的奇偶
{ return !x?0:update(fa[x],-y)+li[x]*y; }
int main()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
scanf("%d",&w[i]);
for (int i=1;i<=n-1;i++)
scanf("%d%d",&u,&v),fa[v]=u;
for (int i=1;i<=m;i++)
{
scanf("%d",&wt);
intq,e;
if (wt==2) scanf("%d",&q),printf("%d\n",w[q]+update(q,1));
else scanf("%d%d",&q,&e),li[q]+=e;
}
}