#include <bits/stdc++.h>
using namespace std;
#include <iostream>
#define Sa7afy_H333 ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define Time cerr << "Time Taken: " << (float)clock() / CLOCKS_PER_SEC << " Secs" << "\n";
#define cin(v) for (auto&i:v) cin >> i;
#define cout(v) for (auto&i:v) cout << i << " ";cout<<e;
#include <algorithm>
#include <vector>
#define ll long long int
#define e '\n'
#define PI acos(-1)
#define PHI (long double)1.61803398875 //golden ratio
#define sin(a) sin((a)*PI/180)
#define cos(a) cos((a)*PI/180)
#define tan(a) tan((a)*PI/180)
#define eb emplace_back
#define ones(x) __builtin_popcountll(x)
#define all(v) v.begin(), v.end()
#define allr(v) v.rbegin(), v.rend()
#define pii pair<ll,ll>
#define vi vector<int>
#define vll vector<ll>
#include <set>
#include <deque>
#define d2v vector<vector<int>>
typedef pair<int,int> Pii;
#define pb push_back
const int mod = 1e9+7;
ll mult(ll a, ll b){ return ((a % mod) * (b % mod)) % mod; }
ll add(ll a, ll b) { return ((a % mod) + (b % mod)) % mod; }
ll sub(ll a, ll b) { return ((a % mod) - (b % mod) + mod) % mod; }
int dx[]={1,0,-1,0,1,1,-1,-1};
int dy[]={0,1,0,-1,1,-1,-1,1};
struct BIT{
vector<ll>tree;
BIT(int n) {
tree.resize(n + 1,0);
}
ll get(int x) {
ll res = 0;
while (x) {
res += tree[x];
x -= x & -x;
}
return res;
}
void update (ll x,ll val) {
while (x < tree.size()) {
tree[x] += val;
x += x & -x;
}
}
ll query(int l,int r) {
return get(r) - get(l - 1);
}
};
const int N= 2e5+5;
vector<ll>start(N),finish(N),val(N);
vector<ll> adj[N];
int timer ;
BIT bit(N);
void dfs(int u,int p) {
start[u] = ++timer;
// get index for every node by flatten the tree
// update the node
bit.update(timer, val[u]);
for (auto x: adj[u]) {
if (x == p)continue;
dfs(x, u);
}
finish[u] = timer;
}
void solve () {
int n, q, x, y, op;
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> val[i];
}
for (int i = 0; i < n - 1; i++) {
cin >> x >> y;
adj[x].eb(y);
adj[y].eb(x);
}
dfs(1,0);
while (q--) {
cin >> op;
if (op & 1) {
cin >> x >> y;
// update
bit.update(start[x], y-val[x]);
val[x] = y;
}else {
cin >> x;
cout << bit.query(start[x], finish[x]) << e;
}
}
}
signed main() {
Sa7afy_H333
int tests = 1;
// cin >> tests;
for (int i = 1; i <= tests; i++) {
/*cout<<"Case #"<<i<<": ";*/
solve();
}
Time
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2RlZmluZSBTYTdhZnlfSDMzMyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiNkZWZpbmUgVGltZSBjZXJyIDw8ICJUaW1lIFRha2VuOiAiIDw8IChmbG9hdCljbG9jaygpIC8gQ0xPQ0tTX1BFUl9TRUMgPDwgIiBTZWNzIiA8PCAiXG4iOwojZGVmaW5lIGNpbih2KSBmb3IgKGF1dG8maTp2KSBjaW4gPj4gaTsKI2RlZmluZSBjb3V0KHYpIGZvciAoYXV0byZpOnYpIGNvdXQgPDwgaSA8PCAiICI7Y291dDw8ZTsKI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CiNkZWZpbmUgZSAnXG4nCiNkZWZpbmUgUEkgYWNvcygtMSkKI2RlZmluZSBQSEkgKGxvbmcgZG91YmxlKTEuNjE4MDMzOTg4NzUgLy9nb2xkZW4gcmF0aW8KI2RlZmluZSBzaW4oYSkgc2luKChhKSpQSS8xODApCiNkZWZpbmUgY29zKGEpIGNvcygoYSkqUEkvMTgwKQojZGVmaW5lIHRhbihhKSB0YW4oKGEpKlBJLzE4MCkKI2RlZmluZSAgZWIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgb25lcyh4KSBfX2J1aWx0aW5fcG9wY291bnRsbCh4KQojZGVmaW5lIGFsbCh2KSB2LmJlZ2luKCksIHYuZW5kKCkKI2RlZmluZSBhbGxyKHYpIHYucmJlZ2luKCksIHYucmVuZCgpCiNkZWZpbmUgcGlpIHBhaXI8bGwsbGw+CiNkZWZpbmUgdmkgdmVjdG9yPGludD4KI2RlZmluZSB2bGwgdmVjdG9yPGxsPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8ZGVxdWU+CiNkZWZpbmUgZDJ2IHZlY3Rvcjx2ZWN0b3I8aW50Pj4KdHlwZWRlZiBwYWlyPGludCxpbnQ+IFBpaTsKI2RlZmluZSAgcGIgcHVzaF9iYWNrCiAKY29uc3QgaW50IG1vZCA9IDFlOSs3OwogCmxsIG11bHQobGwgYSwgbGwgYil7IHJldHVybiAoKGEgJSBtb2QpICogKGIgJSBtb2QpKSAlIG1vZDsgfQpsbCBhZGQobGwgYSwgbGwgYikgeyByZXR1cm4gKChhICUgbW9kKSArIChiICUgbW9kKSkgJSBtb2Q7IH0KbGwgc3ViKGxsIGEsIGxsIGIpIHsgcmV0dXJuICgoYSAlIG1vZCkgLSAoYiAlIG1vZCkgKyBtb2QpICUgbW9kOyB9CmludCBkeFtdPXsxLDAsLTEsMCwxLDEsLTEsLTF9OwppbnQgZHlbXT17MCwxLDAsLTEsMSwtMSwtMSwxfTsKIAogCiAKc3RydWN0IEJJVHsKICAgIHZlY3RvcjxsbD50cmVlOwogICAgQklUKGludCBuKSB7CiAgICAgICAgdHJlZS5yZXNpemUobiArIDEsMCk7CiAgICB9CiAgICBsbCBnZXQoaW50IHgpIHsKICAgICAgICBsbCByZXMgPSAwOwogICAgICAgIHdoaWxlICh4KSB7CiAgICAgICAgICAgIHJlcyArPSB0cmVlW3hdOwogICAgICAgICAgICB4IC09IHggJiAteDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KIAogICAgdm9pZCB1cGRhdGUgKGxsIHgsbGwgdmFsKSB7CiAgICAgICAgd2hpbGUgKHggPCB0cmVlLnNpemUoKSkgewogICAgICAgICAgICB0cmVlW3hdICs9IHZhbDsKICAgICAgICAgICAgeCArPSB4ICYgLXg7CiAgICAgICAgfQogICAgfQogCiAgICBsbCBxdWVyeShpbnQgbCxpbnQgcikgewogICAgICAgIHJldHVybiBnZXQocikgLSBnZXQobCAtIDEpOwogICAgfQogCn07CiAKY29uc3QgaW50IE49IDJlNSs1Owp2ZWN0b3I8bGw+c3RhcnQoTiksZmluaXNoKE4pLHZhbChOKTsKdmVjdG9yPGxsPiBhZGpbTl07CmludCB0aW1lciA7CkJJVCBiaXQoTik7CiAKdm9pZCBkZnMoaW50IHUsaW50IHApIHsKICAgIHN0YXJ0W3VdID0gKyt0aW1lcjsKICAgIC8vIGdldCBpbmRleCBmb3IgZXZlcnkgbm9kZSBieSBmbGF0dGVuIHRoZSB0cmVlCiAgICAvLyB1cGRhdGUgdGhlIG5vZGUKICAgIGJpdC51cGRhdGUodGltZXIsIHZhbFt1XSk7CiAgICBmb3IgKGF1dG8geDogYWRqW3VdKSB7CiAgICAgICAgaWYgKHggPT0gcCljb250aW51ZTsKICAgICAgICBkZnMoeCwgdSk7CiAgICB9CiAgICBmaW5pc2hbdV0gPSB0aW1lcjsKfQogCnZvaWQgc29sdmUgKCkgewogICAgaW50IG4sIHEsIHgsIHksIG9wOwogICAgY2luID4+IG4gPj4gcTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiB2YWxbaV07CiAgICB9CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKICAgICAgICBjaW4gPj4geCA+PiB5OwogICAgICAgIGFkalt4XS5lYih5KTsKICAgICAgICBhZGpbeV0uZWIoeCk7CiAgICB9CiAgICBkZnMoMSwwKTsKICAgIHdoaWxlIChxLS0pIHsKICAgICAgICBjaW4gPj4gb3A7CiAgICAgICAgaWYgKG9wICYgMSkgewogICAgICAgICAgICBjaW4gPj4geCA+PiB5OwogICAgICAgICAgICAvLyB1cGRhdGUKICAgICAgICAgICAgYml0LnVwZGF0ZShzdGFydFt4XSwgeS12YWxbeF0pOwogICAgICAgICAgICB2YWxbeF0gPSB5OwogICAgICAgIH1lbHNlIHsKICAgICAgICAgICAgY2luID4+IHg7CiAgICAgICAgICAgIGNvdXQgPDwgYml0LnF1ZXJ5KHN0YXJ0W3hdLCBmaW5pc2hbeF0pIDw8IGU7CiAgICAgICAgfQogICAgfQp9CiAKc2lnbmVkIG1haW4oKSB7CiAgICBTYTdhZnlfSDMzMwogICAgaW50IHRlc3RzID0gMTsKICAgLy8gY2luID4+IHRlc3RzOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gdGVzdHM7IGkrKykgewogICAgICAgIC8qY291dDw8IkNhc2UgIyI8PGk8PCI6ICI7Ki8KICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgVGltZQp9Cg==