#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 2e5 + 5;
// Euler Tour cho Truy vấn cây con: Ta thêm u vào Euler Tour khi dfs đi vào u
// - Đỉnh u là tổ tiên của đỉnh v nếu tin(v) nằm trong đoạn [tin(u), tout(u)]
// (Hoặc có thể sử dụng điều kiện đoạn [tin(v), tout(v)] nằm trong đoạn [tin(u), tout(u)])
// => Cây con gốc u sẽ tương ứng với đoạn [tin(u), tout(u)] trên Euler Tour
// - (Biết thêm) Với 2 đỉnh u, v bất kì hoặc là đoạn này bao lấy đoạn kia (u, v có quan hệ tổ tiên)
// hoặc hai đoạn không giao nhau (u, v không có quan hệ tổ tiên (nằm khác nhánh))
// Biến đổi truy vấn trong bài:
// 1. Update đỉnh u => Update tin(u) => Update 1 điểm
// 2. Tính tổng cây con gốc u => Tính tổng đoạn [tin(u), tout(u)] => Tính tổng 1 đoạn
// => Có thể sử dụng Fenwick Tree / Segment Tree
int n, q;
int a[N];
vector<int> adj[N];
int tin[N]; // tin[u] = thời gian dfs đi vào đỉnh u
int tout[N]; // tout[u] = thời gian dfs đi ra khỏi đỉnh u
int timer;
void dfs(int u, int p) {
tin[u] = ++timer;
for (int v : adj[u]) {
if (v == p) continue;
dfs(v, u);
}
tout[u] = timer;
}
struct Fenwick {
int n;
vector<ll> ft;
Fenwick(int n) : n(n) {
ft.resize(n, 0);
}
void update(int pos, int val) {
for (; pos <= n; pos += pos & (-pos)) {
ft[pos] += val;
}
}
ll get(int pos) {
ll ans = 0;
for (; pos > 0; pos -= pos & (-pos)) {
ans += ft[pos];
}
return ans;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> q;
for (int u = 1; u <= n; u++) cin >> a[u];
for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
timer = 0;
dfs(1, -1);
Fenwick fenw(n + 1);
for (int u = 1; u <= n; u++) {
fenw.update(tin[u], a[u]);
}
while (q--) {
int type, u;
cin >> type >> u;
if (type == 1) {
int val;
cin >> val;
fenw.update(tin[u], -a[u] + val);
a[u] = val;
}
else {
ll ans = fenw.get(tout[u]) - fenw.get(tin[u] - 1);
cout << ans << '\n';
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAyZTUgKyA1OyAKCi8vIEV1bGVyIFRvdXIgY2hvIFRydXkgduG6pW4gY8OieSBjb246IFRhIHRow6ptIHUgdsOgbyBFdWxlciBUb3VyIGtoaSBkZnMgxJFpIHbDoG8gdQovLyAtIMSQ4buJbmggdSBsw6AgdOG7lSB0acOqbiBj4bunYSDEkeG7iW5oIHYgbuG6v3UgdGluKHYpIG7hurFtIHRyb25nIMSRb+G6oW4gW3Rpbih1KSwgdG91dCh1KV0gCi8vICAoSG/hurdjIGPDsyB0aOG7gyBz4butIGThu6VuZyDEkWnhu4F1IGtp4buHbiDEkW/huqFuIFt0aW4odiksIHRvdXQodildIG7hurFtIHRyb25nIMSRb+G6oW4gW3Rpbih1KSwgdG91dCh1KV0pCi8vID0+IEPDonkgY29uIGfhu5FjIHUgc+G6vSB0xrDGoW5nIOG7qW5nIHbhu5tpIMSRb+G6oW4gW3Rpbih1KSwgdG91dCh1KV0gdHLDqm4gRXVsZXIgVG91cgovLyAtIChCaeG6v3QgdGjDqm0pIFbhu5tpIDIgxJHhu4luaCB1LCB2IGLhuqV0IGvDrCBob+G6t2MgbMOgIMSRb+G6oW4gbsOgeSBiYW8gbOG6pXkgxJFv4bqhbiBraWEgKHUsIHYgY8OzIHF1YW4gaOG7hyB04buVIHRpw6puKQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgaG/hurdjIGhhaSDEkW/huqFuIGtow7RuZyBnaWFvIG5oYXUgKHUsIHYga2jDtG5nIGPDsyBxdWFuIGjhu4cgdOG7lSB0acOqbiAobuG6sW0ga2jDoWMgbmjDoW5oKSkKCi8vIEJp4bq/biDEkeG7lWkgdHJ1eSB24bqlbiB0cm9uZyBiw6BpOgovLyAxLiBVcGRhdGUgxJHhu4luaCB1ID0+IFVwZGF0ZSB0aW4odSkgPT4gVXBkYXRlIDEgxJFp4buDbQovLyAyLiBUw61uaCB04buVbmcgY8OieSBjb24gZ+G7kWMgdSA9PiBUw61uaCB04buVbmcgxJFv4bqhbiBbdGluKHUpLCB0b3V0KHUpXSA9PiBUw61uaCB04buVbmcgMSDEkW/huqFuCi8vID0+IEPDsyB0aOG7gyBz4butIGThu6VuZyBGZW53aWNrIFRyZWUgLyBTZWdtZW50IFRyZWUKCmludCBuLCBxOyAgCQppbnQgYVtOXTsgCnZlY3RvcjxpbnQ+IGFkaltOXTsgCgppbnQgdGluW05dOyAgLy8gdGluW3VdID0gdGjhu51pIGdpYW4gZGZzIMSRaSB2w6BvIMSR4buJbmggdSAKaW50IHRvdXRbTl07IC8vIHRvdXRbdV0gPSB0aOG7nWkgZ2lhbiBkZnMgxJFpIHJhIGto4buPaSDEkeG7iW5oIHUgCmludCB0aW1lcjsgIAoKdm9pZCBkZnMoaW50IHUsIGludCBwKSB7Cgl0aW5bdV0gPSArK3RpbWVyOyAKCWZvciAoaW50IHYgOiBhZGpbdV0pIHsKCQlpZiAodiA9PSBwKSBjb250aW51ZTsgIAoJCWRmcyh2LCB1KTsgIAoJfQoJdG91dFt1XSA9IHRpbWVyOyAKfQoKc3RydWN0IEZlbndpY2sgewoJaW50IG47ICAKCXZlY3RvcjxsbD4gZnQ7ICAKCglGZW53aWNrKGludCBuKSA6IG4obikgewoJCWZ0LnJlc2l6ZShuLCAwKTsKCX0KCgl2b2lkIHVwZGF0ZShpbnQgcG9zLCBpbnQgdmFsKSB7CgkJZm9yICg7IHBvcyA8PSBuOyBwb3MgKz0gcG9zICYgKC1wb3MpKSB7CgkJCWZ0W3Bvc10gKz0gdmFsOyAKCQl9Cgl9CgoJbGwgZ2V0KGludCBwb3MpIHsKCQlsbCBhbnMgPSAwOyAgIAoJCWZvciAoOyBwb3MgPiAwOyBwb3MgLT0gcG9zICYgKC1wb3MpKSB7CgkJCWFucyArPSBmdFtwb3NdOyAKCQl9CgkJcmV0dXJuIGFuczsgCgl9Cn07IAoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gcTsgCglmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIGNpbiA+PiBhW3VdOyAKCglmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKCQlpbnQgdSwgdjsgCgkJY2luID4+IHUgPj4gdjsgCgkJYWRqW3VdLnB1c2hfYmFjayh2KTsgCgkJYWRqW3ZdLnB1c2hfYmFjayh1KTsgCgl9CgoJdGltZXIgPSAwOyAKCWRmcygxLCAtMSk7IAoKCUZlbndpY2sgZmVudyhuICsgMSk7ICAgCglmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIHsKCQlmZW53LnVwZGF0ZSh0aW5bdV0sIGFbdV0pOyAKCX0KCgl3aGlsZSAocS0tKSB7CgkJaW50IHR5cGUsIHU7IAoJCWNpbiA+PiB0eXBlID4+IHU7ICAKCgkJaWYgKHR5cGUgPT0gMSkgewoJCQlpbnQgdmFsOyAKCQkJY2luID4+IHZhbDsgCgkJCWZlbncudXBkYXRlKHRpblt1XSwgLWFbdV0gKyB2YWwpOyAgCgkJCWFbdV0gPSB2YWw7IAoJCX0KCQllbHNlIHsKCQkJbGwgYW5zID0gZmVudy5nZXQodG91dFt1XSkgLSBmZW53LmdldCh0aW5bdV0gLSAxKTsgCgkJCWNvdXQgPDwgYW5zIDw8ICdcbic7IAoJCX0KCX0KfQ==