// ROOT : DRAGON3012009 : WA in Real Life
#include <bits/stdc++.h>
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
#define ll long long
#define el "\n"
#define fi first
#define se second
#define _ROOT_ int main()
#define M 1000000007
#define MAXN 1000001
#define Bit(i) (1LL << i )
#define INF (1ll<<60)
#define NAME "file"
#define debug(a) cout << #a << " = " << a << endl;
using namespace std;
ll n, m, q ;
ll a[MAXN] ;
ll st[MAXN], fin[MAXN], timeDFS ;
vector<ll> adj[MAXN ] ;
struct Seg {
ll val[MAXN << 2 ] ;
ll lazy[MAXN << 2 ] ;
void fix(ll id, ll l, ll r ) {
if(lazy[id]== 0 ) return ;
val[id] += (lazy[id]) * (r - l + 1) ;
if(l != r ) {
lazy[id << 1] += lazy[id] ;
lazy[id << 1 | 1 ] += lazy[id];
}
lazy[id] = 0 ;
}
void update(ll id, ll l,ll r, ll u, ll v, ll value ) {
fix(id, l, r ) ;
if(u > r || v < l ) return ;
if(u <= l && v >= r ) {
lazy[id] += value ;
fix(id, l,r ) ;
return ;
}
ll m = l + r >> 1 ;
update(id << 1, l, m, u, v, value ) ;
update(id << 1 | 1, m + 1, r, u, v, value ) ;
val[id] = val[id << 1] + val[id << 1 | 1 ] ;
}
ll get(ll id, ll l, ll r, ll u, ll v ) {
fix(id, l, r ) ;
if(u > r || v < l ) return 0 ;
if(u <=l && v >= r ) return val[id] ;
ll m = l + r >> 1 ;
return get(id << 1, l, m, u, v ) + get(id << 1 | 1, m + 1, r, u, v ) ;
}
} seg ;
void dfs(ll u, ll p ) {
st[u] = ++ timeDFS ;
for(ll v : adj[u]) if(v != p ) {
dfs(v, u ) ;
}
fin[u] = timeDFS ;
}
void init() {
cin >> n >> q ;
FOR(i, 1, n ) cin >> a[i] ;
FOR(i, 2, n ) {
ll x, y ;
cin >> x >> y ;
adj[x].push_back(y) ;
adj[y].push_back(x) ;
}
}
void solve() {
dfs(1 , 1 ) ;
FOR(i, 1, n ) {
seg.update(1, 1, n, st[i], st[i], a[i]);
}
// debug(seg.val[1]) ;
FOR(cnt, 1, q ) {
ll t, u, x ;
cin >> t >> u ;
if(t == 1 ) {
cin >> x ;
seg.update(1, 1, n, st[u], fin[u], x ) ;
} else cout << seg.get(1, 1, n, st[u], fin[u]) << el ;
}
}
_ROOT_ {
// freopen(NAME".inp", "r", stdin);
// freopen(NAME".out", "w", stdout) ;
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1; // cin >> t ;
while(t--) {
init();
solve();
}
return (0&0);
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkgOiBXQSBpbiBSZWFsIExpZmUKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBfUk9PVF8gaW50IG1haW4oKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIE1BWE4gMTAwMDAwMQojZGVmaW5lIEJpdChpKSAoMUxMIDw8IGkgKQojZGVmaW5lIElORiAoMWxsPDw2MCkKI2RlZmluZSBOQU1FICJmaWxlIgojZGVmaW5lIGRlYnVnKGEpIGNvdXQgPDwgI2EgPDwgIiA9ICIgPDwgYSA8PCBlbmRsOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbGwgbiwgbSwgcSA7CmxsIGFbTUFYTl0gOwpsbCBzdFtNQVhOXSwgZmluW01BWE5dLCB0aW1lREZTIDsKdmVjdG9yPGxsPiBhZGpbTUFYTiBdIDsKCnN0cnVjdCBTZWcgewogICAgbGwgdmFsW01BWE4gPDwgMiBdIDsKICAgIGxsIGxhenlbTUFYTiA8PCAyIF0gOwoKICAgIHZvaWQgZml4KGxsIGlkLCBsbCBsLCBsbCByICkgewogICAgICAgIGlmKGxhenlbaWRdPT0gMCApIHJldHVybiA7CiAgICAgICAgdmFsW2lkXSArPSAobGF6eVtpZF0pICogKHIgLSBsICsgMSkgOwogICAgICAgIGlmKGwgIT0gciApIHsKICAgICAgICAgICAgbGF6eVtpZCA8PCAxXSArPSBsYXp5W2lkXSA7CiAgICAgICAgICAgIGxhenlbaWQgPDwgMSB8IDEgXSArPSBsYXp5W2lkXTsKICAgICAgICB9CiAgICAgICAgbGF6eVtpZF0gPSAwIDsKICAgIH0KCiAgICB2b2lkIHVwZGF0ZShsbCBpZCwgbGwgbCxsbCByLCBsbCB1LCBsbCB2LCBsbCB2YWx1ZSApIHsKICAgICAgICBmaXgoaWQsIGwsIHIgKSA7CiAgICAgICAgaWYodSA+IHIgfHwgdiA8IGwgKSByZXR1cm4gOwogICAgICAgIGlmKHUgPD0gbCAmJiB2ID49IHIgKSB7CiAgICAgICAgICAgIGxhenlbaWRdICs9IHZhbHVlIDsKICAgICAgICAgICAgZml4KGlkLCBsLHIgKSA7CiAgICAgICAgICAgIHJldHVybiA7CiAgICAgICAgfQogICAgICAgIGxsIG0gPSBsICsgciA+PiAxIDsKICAgICAgICB1cGRhdGUoaWQgPDwgMSwgbCwgbSwgdSwgdiwgdmFsdWUgKSA7CiAgICAgICAgdXBkYXRlKGlkIDw8IDEgfCAxLCBtICsgMSwgciwgdSwgdiwgdmFsdWUgKSA7CiAgICAgICAgdmFsW2lkXSA9IHZhbFtpZCA8PCAxXSArIHZhbFtpZCA8PCAxIHwgMSBdIDsKICAgIH0KCiAgICBsbCBnZXQobGwgaWQsIGxsIGwsIGxsIHIsIGxsIHUsIGxsIHYgKSB7CiAgICAgICAgZml4KGlkLCBsLCByICkgOwogICAgICAgIGlmKHUgPiByIHx8IHYgPCBsICkgcmV0dXJuIDAgOwogICAgICAgIGlmKHUgPD1sICYmIHYgPj0gciApIHJldHVybiB2YWxbaWRdIDsKICAgICAgICBsbCBtID0gbCArIHIgPj4gMSA7CiAgICAgICAgcmV0dXJuIGdldChpZCA8PCAxLCBsLCBtLCB1LCB2ICkgKyBnZXQoaWQgPDwgMSB8IDEsIG0gICsgMSwgciwgdSwgdiApIDsKICAgIH0KfSBzZWcgOwoKCnZvaWQgZGZzKGxsIHUsIGxsIHAgKSB7CiAgICBzdFt1XSA9ICsrIHRpbWVERlMgOwogICAgZm9yKGxsIHYgOiBhZGpbdV0pIGlmKHYgIT0gcCApIHsKICAgICAgICAgICAgZGZzKHYsIHUgKSA7CiAgICAgICAgfQogICAgZmluW3VdID0gdGltZURGUyA7Cn0KCnZvaWQgaW5pdCgpIHsKICAgIGNpbiA+PiBuID4+IHEgOwogICAgRk9SKGksIDEsIG4gKSBjaW4gPj4gYVtpXSA7CiAgICBGT1IoaSwgMiwgbiApIHsKICAgICAgICBsbCB4LCAgeSA7CiAgICAgICAgY2luID4+IHggPj4geSA7CiAgICAgICAgYWRqW3hdLnB1c2hfYmFjayh5KSA7CiAgICAgICAgYWRqW3ldLnB1c2hfYmFjayh4KSA7CiAgICB9Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBkZnMoMSAsIDEgKSA7CiAgICBGT1IoaSwgMSwgbiApIHsKICAgICAgICBzZWcudXBkYXRlKDEsIDEsIG4sIHN0W2ldLCBzdFtpXSwgYVtpXSk7CiAgICB9Ci8vICAgIGRlYnVnKHNlZy52YWxbMV0pIDsKICAgIEZPUihjbnQsIDEsIHEgKSB7CiAgICAgICAgbGwgdCwgdSwgeCA7CiAgICAgICAgY2luID4+IHQgPj4gdSA7CiAgICAgICAgaWYodCA9PSAxICkgewogICAgICAgICAgICBjaW4gPj4geCA7CiAgICAgICAgICAgIHNlZy51cGRhdGUoMSwgMSwgbiwgc3RbdV0sIGZpblt1XSwgeCApIDsKICAgICAgICB9IGVsc2UgY291dCA8PCBzZWcuZ2V0KDEsIDEsIG4sIHN0W3VdLCBmaW5bdV0pIDw8IGVsIDsKICAgIH0KfQoKCl9ST09UXyB7Ci8vICAgIGZyZW9wZW4oTkFNRSIuaW5wIiwgInIiLCBzdGRpbik7Ci8vICAgIGZyZW9wZW4oTkFNRSIub3V0IiwgInciLCBzdGRvdXQpIDsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICBpbnQgdCA9IDE7IC8vIGNpbiA+PiB0IDsKICAgIHdoaWxlKHQtLSkgewogICAgICAgIGluaXQoKTsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuICgwJjApOwp9Cg==