#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pb push_back
#define el '\n'
#define fast_io ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
const int MAXN = 2e5 + 5;
int n,m;
int a[MAXN];
vector<int> ke[MAXN];
int tin[MAXN],tout[MAXN];
int timer;
int st[MAXN];
void dfs(int u, int p){
tin[u] = tout[u] = ++timer;
for(int v : ke[u]){
if(v==p) continue;
dfs(v,u);
tout[u]=max(tout[u],tout[v]);
}
}
void update(int id, int l, int r, int pos, int val){
if(pos>r||pos<r) return;
if(l<=pos&&pos<=r) {
st[pos] = val;
return;
}
int mid = (l+r)/2;
update(id*2,l,mid,pos,val);
update(id*2+1,mid+1,r,pos,val);
st[id]=st[id*2]+st[id*2+1];
}
int get(int id, int l, int r, int u, int v){
if(l>v||r<u) return 0;
if(l<=u&&r<=v){
return st[id];
}
int mid = (l+r)/2;
return get(id*2,l,mid,u,v)+get(id*2+1,mid+1,r,u,v);
}
main() {
fast_io;
cin >> n >> m;
for(int i=1;i<=n;i++){
cin >> a[i];
}
for(int i=1;i<n;i++){
int u,v;
cin >> u >> v;
ke[u].pb(v);
ke[v].pb(u);
}
dfs(1,-1);
for(int i=1;i<=n;i++){
update(1,1,n,tin[i],a[i]);
}
while(m--){
int type;
cin >> type;
if(type==1){
int x,val;
cin >> x >> val;
update(1,1,n,tin[x],val);
}
else{
int s;
cin >> s;
cout << get(1,1,n,tin[s],tout[s]) << el;
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgZWwgJ1xuJwojZGVmaW5lIGZhc3RfaW8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOwoKY29uc3QgaW50IE1BWE4gPSAyZTUgKyA1OwoKaW50IG4sbTsKaW50IGFbTUFYTl07CnZlY3RvcjxpbnQ+IGtlW01BWE5dOwppbnQgdGluW01BWE5dLHRvdXRbTUFYTl07CmludCB0aW1lcjsKaW50IHN0W01BWE5dOwoKdm9pZCBkZnMoaW50IHUsIGludCBwKXsKICAgIHRpblt1XSA9IHRvdXRbdV0gPSArK3RpbWVyOwogICAgZm9yKGludCB2IDoga2VbdV0pewogICAgICAgIGlmKHY9PXApIGNvbnRpbnVlOwogICAgICAgIGRmcyh2LHUpOwogICAgICAgIHRvdXRbdV09bWF4KHRvdXRbdV0sdG91dFt2XSk7CiAgICB9Cn0KCnZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgcG9zLCBpbnQgdmFsKXsKICAgIGlmKHBvcz5yfHxwb3M8cikgcmV0dXJuOwogICAgaWYobDw9cG9zJiZwb3M8PXIpIHsKICAgICAgICBzdFtwb3NdID0gdmFsOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGludCBtaWQgPSAobCtyKS8yOwogICAgdXBkYXRlKGlkKjIsbCxtaWQscG9zLHZhbCk7CiAgICB1cGRhdGUoaWQqMisxLG1pZCsxLHIscG9zLHZhbCk7CiAgICBzdFtpZF09c3RbaWQqMl0rc3RbaWQqMisxXTsKfQoKaW50IGdldChpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHUsIGludCB2KXsKICAgIGlmKGw+dnx8cjx1KSByZXR1cm4gMDsKICAgIGlmKGw8PXUmJnI8PXYpewogICAgICAgIHJldHVybiBzdFtpZF07CiAgICB9CiAgICBpbnQgbWlkID0gKGwrcikvMjsKICAgIHJldHVybiBnZXQoaWQqMixsLG1pZCx1LHYpK2dldChpZCoyKzEsbWlkKzEscix1LHYpOwp9CgptYWluKCkgewogICAgZmFzdF9pbzsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKyl7CiAgICAgICAgY2luID4+IGFbaV07CiAgICB9CiAgICBmb3IoaW50IGk9MTtpPG47aSsrKXsKICAgICAgICBpbnQgdSx2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAga2VbdV0ucGIodik7CiAgICAgICAga2Vbdl0ucGIodSk7CiAgICB9CiAgICBkZnMoMSwtMSk7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKyl7CiAgICAgICAgdXBkYXRlKDEsMSxuLHRpbltpXSxhW2ldKTsKICAgIH0KICAgIHdoaWxlKG0tLSl7CiAgICAgICAgaW50IHR5cGU7CiAgICAgICAgY2luID4+IHR5cGU7CiAgICAgICAgaWYodHlwZT09MSl7CiAgICAgICAgICAgIGludCB4LHZhbDsKICAgICAgICAgICAgY2luID4+IHggPj4gdmFsOwogICAgICAgICAgICB1cGRhdGUoMSwxLG4sdGluW3hdLHZhbCk7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgICAgIGludCBzOwogICAgICAgICAgICBjaW4gPj4gczsKICAgICAgICAgICAgY291dCA8PCBnZXQoMSwxLG4sdGluW3NdLHRvdXRbc10pIDw8IGVsOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9