// 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 300103
#define Bit(i) (1LL << i )
#define INF (1ll<<30)
#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 ;
ll h[MAXN ] ;
ll par[MAXN] ;
vector<ll> high[MAXN ] ;
vector<ll> adj[MAXN] ;
struct Seg {
vector<ll> lazy, val ;
void addd(ll sz ) {
lazy.resize(4 * sz , 0 ) ;
val.resize(4 * sz , 0 ) ;
}
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[MAXN ] ;
void dfs(ll u, ll p ) {
st[u] = ++ timeDfs ;
for(ll v : adj[u]) if(v != p ) {
par[v] = u ;
h[v] = h[u] + 1;
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 ) high[h[i]].push_back(st[i]) ;
FOR(i, 0, n ) sort(high[i].begin(), high[i].end() ) ;
FOR(i, 0, n + 1 ) seg[i].addd(high[i].size() + 1 ) ;
FOR(i, 1, n ) {
ll L = lower_bound(high[h[i]].begin(), high[h[i]].end(), st[i]) - high[h[i]].begin() ;
seg[h[i]].update(1, 0, high[h[i]].size(), L, L, a[i]) ;
}
FOR(cnt, 1, q ) {
ll t ;
cin >> t ;
if(t == 1 ) {
ll u, value ;
cin >> u >> value ;
ll nxt_high = h[u] + 1 ;
ll L = lower_bound(high[h[u]].begin(), high[h[u]].end(), st[u]) - high[h[u]].begin() ;
seg[h[u]].update(1, 0, high[h[u]].size(), L, L, 2 * value ) ;
if(par[u]) {
L = lower_bound(high[h[u] - 1 ].begin(), high[h[u] - 1 ].end(), st[par[u]] ) - high[h[u] - 1 ].begin() ;
seg[h[u] - 1 ].update(1, 0, high[h[u] - 1].size(), L, L, value ) ;
}
L = lower_bound(high[nxt_high].begin(), high[nxt_high].end(), st[u] ) - high[nxt_high].begin() ;
ll R = upper_bound(high[nxt_high].begin(), high[nxt_high].end(), fin[u] ) - high[nxt_high].begin() - 1 ;
if(L > R ) continue ;
seg[nxt_high].update(1, 0, high[nxt_high].size(), L, R, value ) ;
} else {
ll u ;
cin >> u ;
ll ans = 0 ;
ll nxt_high = h[u] + 1 ;
ll L = lower_bound(high[h[u]].begin(), high[h[u]].end(), st[u]) - high[h[u]].begin() ;
ans += seg[h[u]].get(1, 0, high[h[u]].size(), L, L ) ;
if(par[u]) {
L = lower_bound(high[h[u] - 1 ].begin(), high[h[u] - 1 ].end(), st[par[u]] ) - high[h[u] - 1 ].begin() ;
ans += seg[h[u] - 1 ].get(1, 0, high[h[u] - 1].size(), L, L ) ;
}
L = lower_bound(high[nxt_high].begin(), high[nxt_high].end(), st[u] ) - high[nxt_high].begin() ;
ll R = upper_bound(high[nxt_high].begin(), high[nxt_high].end(), fin[u] ) - high[nxt_high].begin() - 1 ;
if(L <= R ) ans += seg[nxt_high].get(1, 0, high[nxt_high].size(), L, R ) ;
cout << ans << 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+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBfUk9PVF8gaW50IG1haW4oKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIE1BWE4gMzAwMTAzCiNkZWZpbmUgQml0KGkpICgxTEwgPDwgaSApCiNkZWZpbmUgSU5GICgxbGw8PDMwKQojZGVmaW5lIE5BTUUgImZpbGUiCiNkZWZpbmUgZGVidWcoYSkgY291dCA8PCAjYSA8PCAiID0gIiA8PCBhIDw8IGVuZGw7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpsbCBuLCBtLCBxIDsKbGwgYVtNQVhOXSA7CmxsIHN0W01BWE5dLCBmaW5bTUFYTiBdLCB0aW1lRGZzIDsKbGwgaFtNQVhOIF0gOwpsbCBwYXJbTUFYTl0gOwp2ZWN0b3I8bGw+IGhpZ2hbTUFYTiBdIDsKdmVjdG9yPGxsPiBhZGpbTUFYTl0gOwoKc3RydWN0IFNlZyB7CiAgICB2ZWN0b3I8bGw+IGxhenksIHZhbCA7CgogICAgdm9pZCBhZGRkKGxsIHN6ICkgewogICAgICAgIGxhenkucmVzaXplKDQgKiBzeiAsIDAgKSA7CiAgICAgICAgdmFsLnJlc2l6ZSg0ICogc3ogLCAwICkgOwogICAgfQogICAgdm9pZCBmaXgobGwgaWQsIGxsIGwsIGxsIHIgKSB7CiAgICAgICAgaWYobGF6eVtpZF0gPT0gMCApIHJldHVybiA7CiAgICAgICAgdmFsW2lkXSArPSBsYXp5W2lkXSAqIChyIC0gbCArIDEgKSA7CiAgICAgICAgaWYobCAhPSByICkgewogICAgICAgICAgICBsYXp5W2lkIDw8IDEgXSArPSBsYXp5W2lkXSA7CiAgICAgICAgICAgIGxhenlbaWQgPDwgMSB8IDFdICs9IGxhenlbaWRdIDsKICAgICAgICB9CiAgICAgICAgbGF6eVtpZCBdID0gMCA7CiAgICB9CgogICAgdm9pZCB1cGRhdGUobGwgaWQsIGxsIGwsIGxsIHIsIGxsIHUsIGxsIHYsIGxsIHZhbHVlICkgewogICAgICAgIGZpeChpZCwgbCwgciApIDsKICAgICAgICBpZih1ID4gciB8fCB2IDwgbCApIHJldHVybiA7CiAgICAgICAgaWYodSA8PSBsICYmIHYgPj0gciApIHsKICAgICAgICAgICAgbGF6eVtpZF0gKz0gdmFsdWUgOwogICAgICAgICAgICBmaXgoaWQsIGwsIHIpIDsKICAgICAgICAgICAgcmV0dXJuIDsKICAgICAgICB9CiAgICAgICAgbGwgbSA9IGwgKyByID4+IDEgOwogICAgICAgIHVwZGF0ZShpZCA8PCAxLCBsLCBtLCB1LCB2LCB2YWx1ZSApIDsKICAgICAgICB1cGRhdGUoaWQgPDwgMSB8IDEsIG0gKyAxLCByLCB1LCB2LCB2YWx1ZSApIDsKICAgICAgICB2YWxbaWRdID0gdmFsW2lkIDw8IDFdICsgdmFsW2lkIDw8IDEgfCAxIF0gOwogICAgfQogICAgbGwgZ2V0KGxsIGlkLCBsbCBsLCBsbCByLCBsbCB1LCBsbCB2ICkgewogICAgICAgIGZpeChpZCwgbCwgciApIDsKICAgICAgICBpZih1ID4gciB8fCB2IDwgbCApIHJldHVybiAwIDsKICAgICAgICBpZih1IDw9IGwgJiYgdiA+PSByICkgcmV0dXJuIHZhbFtpZF0gOwogICAgICAgIGxsIG0gPSBsICsgciA+PiAxIDsKICAgICAgICByZXR1cm4gZ2V0KGlkIDw8IDEsIGwsIG0sIHUsIHYgKSArIGdldChpZCA8PCAxIHwgMSwgbSArIDEsIHIsIHUsIHYgKSA7CiAgICB9Cn0gc2VnW01BWE4gXSA7Cgp2b2lkIGRmcyhsbCB1LCBsbCBwICkgewogICAgc3RbdV0gPSArKyB0aW1lRGZzIDsKICAgIGZvcihsbCB2IDogYWRqW3VdKSBpZih2ICE9IHAgKSB7CiAgICAgICAgICAgIHBhclt2XSA9IHUgOwogICAgICAgICAgICBoW3ZdID0gaFt1XSArIDE7CiAgICAgICAgICAgIGRmcyh2LCB1ICkgOwogICAgICAgIH0KICAgIGZpblt1XSA9IHRpbWVEZnMgOwp9Cgp2b2lkIGluaXQoKSB7CiAgICBjaW4gPj4gbiA+PiBxIDsKICAgIEZPUihpLCAxLCBuICkgY2luID4+IGFbaV0gOwogICAgRk9SKGksIDIsIG4gKSB7CiAgICAgICAgbGwgeCwgeSA7CiAgICAgICAgY2luID4+IHggPj4geSA7CiAgICAgICAgYWRqW3hdLnB1c2hfYmFjayh5KSA7CiAgICAgICAgYWRqW3ldLnB1c2hfYmFjayh4KSA7CiAgICB9Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBkZnMoMSAsIDEgKSA7CgogICAgRk9SKGksIDEsIG4gKSBoaWdoW2hbaV1dLnB1c2hfYmFjayhzdFtpXSkgOwogICAgRk9SKGksIDAsIG4gKSBzb3J0KGhpZ2hbaV0uYmVnaW4oKSwgaGlnaFtpXS5lbmQoKSApIDsKICAgIEZPUihpLCAwLCBuICsgMSAgKSBzZWdbaV0uYWRkZChoaWdoW2ldLnNpemUoKSArIDEgKSA7CgogICAgRk9SKGksIDEsIG4gKSB7CiAgICAgICAgbGwgTCA9IGxvd2VyX2JvdW5kKGhpZ2hbaFtpXV0uYmVnaW4oKSwgaGlnaFtoW2ldXS5lbmQoKSwgc3RbaV0pIC0gaGlnaFtoW2ldXS5iZWdpbigpIDsKICAgICAgICBzZWdbaFtpXV0udXBkYXRlKDEsIDAsIGhpZ2hbaFtpXV0uc2l6ZSgpLCBMLCBMLCBhW2ldKSA7CiAgICB9CgogICAgRk9SKGNudCwgMSwgcSApIHsKICAgICAgICBsbCB0IDsKICAgICAgICBjaW4gPj4gdCA7CiAgICAgICAgaWYodCA9PSAxICkgewogICAgICAgICAgICBsbCB1LCB2YWx1ZSA7CiAgICAgICAgICAgIGNpbiA+PiB1ID4+IHZhbHVlIDsKICAgICAgICAgICAgbGwgbnh0X2hpZ2ggPSBoW3VdICsgMSA7CgogICAgICAgICAgICBsbCBMID0gbG93ZXJfYm91bmQoaGlnaFtoW3VdXS5iZWdpbigpLCBoaWdoW2hbdV1dLmVuZCgpLCBzdFt1XSkgLSBoaWdoW2hbdV1dLmJlZ2luKCkgOwogICAgICAgICAgICBzZWdbaFt1XV0udXBkYXRlKDEsIDAsIGhpZ2hbaFt1XV0uc2l6ZSgpLCBMLCBMLCAyICogdmFsdWUgICkgOwoKICAgICAgICAgICAgaWYocGFyW3VdKSB7CiAgICAgICAgICAgICAgICBMID0gbG93ZXJfYm91bmQoaGlnaFtoW3VdIC0gMSBdLmJlZ2luKCksIGhpZ2hbaFt1XSAtIDEgXS5lbmQoKSwgc3RbcGFyW3VdXSApIC0gaGlnaFtoW3VdIC0gMSBdLmJlZ2luKCkgOwogICAgICAgICAgICAgICAgc2VnW2hbdV0gLSAxIF0udXBkYXRlKDEsIDAsIGhpZ2hbaFt1XSAtIDFdLnNpemUoKSwgTCwgTCwgIHZhbHVlICApIDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgTCA9IGxvd2VyX2JvdW5kKGhpZ2hbbnh0X2hpZ2hdLmJlZ2luKCksIGhpZ2hbbnh0X2hpZ2hdLmVuZCgpLCBzdFt1XSApIC0gIGhpZ2hbbnh0X2hpZ2hdLmJlZ2luKCkgOwogICAgICAgICAgICBsbCBSID0gdXBwZXJfYm91bmQoaGlnaFtueHRfaGlnaF0uYmVnaW4oKSwgaGlnaFtueHRfaGlnaF0uZW5kKCksIGZpblt1XSApIC0gaGlnaFtueHRfaGlnaF0uYmVnaW4oKSAtIDEgOwogICAgICAgICAgICBpZihMID4gUiApIGNvbnRpbnVlIDsKICAgICAgICAgICAgc2VnW254dF9oaWdoXS51cGRhdGUoMSwgMCwgaGlnaFtueHRfaGlnaF0uc2l6ZSgpLCBMLCBSLCB2YWx1ZSApIDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBsbCB1IDsKICAgICAgICAgICAgY2luID4+IHUgOwogICAgICAgICAgICBsbCBhbnMgPSAwIDsKICAgICAgICAgICAgbGwgbnh0X2hpZ2ggPSBoW3VdICsgMSA7CgogICAgICAgICAgICBsbCBMID0gbG93ZXJfYm91bmQoaGlnaFtoW3VdXS5iZWdpbigpLCBoaWdoW2hbdV1dLmVuZCgpLCBzdFt1XSkgLSBoaWdoW2hbdV1dLmJlZ2luKCkgOwogICAgICAgICAgICBhbnMgKz0gIHNlZ1toW3VdXS5nZXQoMSwgMCwgaGlnaFtoW3VdXS5zaXplKCksIEwsIEwgICApIDsKCiAgICAgICAgICAgIGlmKHBhclt1XSkgewogICAgICAgICAgICAgICAgTCA9IGxvd2VyX2JvdW5kKGhpZ2hbaFt1XSAtIDEgXS5iZWdpbigpLCBoaWdoW2hbdV0gLSAxIF0uZW5kKCksIHN0W3Bhclt1XV0gKSAtIGhpZ2hbaFt1XSAtIDEgXS5iZWdpbigpIDsKICAgICAgICAgICAgICAgIGFucyArPSAgIHNlZ1toW3VdIC0gMSBdLmdldCgxLCAwLCBoaWdoW2hbdV0gLSAxXS5zaXplKCksIEwsIEwgKSA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIEwgPSBsb3dlcl9ib3VuZChoaWdoW254dF9oaWdoXS5iZWdpbigpLCBoaWdoW254dF9oaWdoXS5lbmQoKSwgc3RbdV0gKSAtICBoaWdoW254dF9oaWdoXS5iZWdpbigpIDsKICAgICAgICAgICAgbGwgUiA9IHVwcGVyX2JvdW5kKGhpZ2hbbnh0X2hpZ2hdLmJlZ2luKCksIGhpZ2hbbnh0X2hpZ2hdLmVuZCgpLCBmaW5bdV0gKSAtIGhpZ2hbbnh0X2hpZ2hdLmJlZ2luKCkgLSAxIDsKICAgICAgICAgICAgaWYoTCA8PSBSICkgYW5zICs9IHNlZ1tueHRfaGlnaF0uZ2V0KDEsIDAsIGhpZ2hbbnh0X2hpZ2hdLnNpemUoKSwgTCwgUiApIDsKCiAgICAgICAgICAgIGNvdXQgPDwgYW5zIDw8IGVsIDsKICAgICAgICB9CiAgICB9Cn0KCl9ST09UXyB7CiAgICAvLyBmcmVvcGVuKE5BTUUiLmlucCIgLCAiciIgLCBzdGRpbik7CiAgICAvLyBmcmVvcGVuKE5BTUUiLm91dCIgLCAidyIsIHN0ZG91dCkgOwogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjb3V0LnRpZSgwKTsKICAgIGludCB0ID0gMTsgLy8gY2luID4+IHQgOwogICAgd2hpbGUodC0tKSB7CiAgICAgICAgaW5pdCgpOwogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gKDAmMCk7Cn0K