#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 Đường đi: Ta thêm đỉnh u vào Euler Tour khi dfs đi vào u và khi dfs đi ra khỏi u
// Khi đó ta chia đường đi trên cây làm 2 loại:
// Loại 1: u, v có quan hệ tổ tiên, giả sử u là tổ tiên của v:
// - Khi đó đường đi từ u đến v sẽ tương ứng với đoạn [tin(u), tin(v)]
// - Đặc biệt những đỉnh thuộc đường đi này sẽ xuất hiện đúng 1 lần trong đoạn,
// còn những đỉnh không thuộc đường đi sẽ xuất hiện đúng 2 lần trong đoạn.
// Loại 2: u, v không có quan hệ tổ tiên (nằm khác nhánh), giả sử tin(u) < tin(v):
// - Khi đó đường đi từ u đến v sẽ tương ứng với đoạn [tout(u), tin(v)]
// - Đặc biệt những đỉnh thuộc đường đi này sẽ xuất hiện đúng 1 lần trong đoạn,
// còn những đỉnh không thuộc đường đi sẽ xuất hiện đúng 2 lần trong đoạn.
// - Lưu ý ở trường hợp này cần xét riêng thêm lca(u, v) vì lca(u, v) sẽ không có trong đoạn này,
// hoặc trong một số bài ta có thể tách thành 2 đường đi là lca(u, v) -> u và lca(u, v) -> v, đưa về lại loại 1.
// - Áp dụng vào bài này, với mỗi đỉnh u ta sẽ +a[u] vào vị trí tin[u] và -a[u] vào vị trí tout[u]
// - Còn để tính tổng của đường đi từ 1 (gốc) đến u thì đơn giản là ta tính tổng đoạn [tin(1), tin(u)] = [1, tin(u)]
// - Khi đó những đỉnh không thuộc đường đi (xuất hiện 2 lần trong đoạn) đều sẽ bị triệt tiêu,
// còn những đỉnh thuộc đường đi (xuất hiện 1 lần trong đoạn) thì sẽ được tính vào tổng.
// => Fenwick Tree / Segment Tree
int n, q;
int a[N];
vector<int> adj[N];
int tin[N], tout[N], 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(2 * n + 1);
for (int u = 1; u <= n; u++) {
fenw.update(tin[u], a[u]);
fenw.update(tout[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);
fenw.update(tout[u], a[u] - val);
a[u] = val;
}
else {
ll ans = fenw.get(tin[u]);
cout << ans << '\n';
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAyZTUgKyA1OyAKCi8vIEV1bGVyIFRvdXIgY2hvIFRydXkgduG6pW4gxJDGsOG7nW5nIMSRaTogVGEgdGjDqm0gxJHhu4luaCB1IHbDoG8gRXVsZXIgVG91ciBraGkgZGZzIMSRaSB2w6BvIHUgdsOgIGtoaSBkZnMgxJFpIHJhIGto4buPaSB1IAovLyBLaGkgxJHDsyB0YSBjaGlhIMSRxrDhu51uZyDEkWkgdHLDqm4gY8OieSBsw6BtIDIgbG/huqFpOiAKLy8gTG/huqFpIDE6IHUsIHYgY8OzIHF1YW4gaOG7hyB04buVIHRpw6puLCBnaeG6oyBz4butIHUgbMOgIHThu5UgdGnDqm4gY+G7p2EgdjogCi8vIC0gS2hpIMSRw7MgxJHGsOG7nW5nIMSRaSB04burIHUgxJHhur9uIHYgc+G6vSB0xrDGoW5nIOG7qW5nIHbhu5tpIMSRb+G6oW4gW3Rpbih1KSwgdGluKHYpXSAKLy8gLSDEkOG6t2MgYmnhu4d0IG5o4buvbmcgxJHhu4luaCB0aHXhu5ljIMSRxrDhu51uZyDEkWkgbsOgeSBz4bq9IHh14bqldCBoaeG7h24gxJHDum5nIDEgbOG6p24gdHJvbmcgxJFv4bqhbiwgCi8vICAgY8OybiBuaOG7r25nIMSR4buJbmgga2jDtG5nIHRodeG7mWMgxJHGsOG7nW5nIMSRaSBz4bq9IHh14bqldCBoaeG7h24gxJHDum5nIDIgbOG6p24gdHJvbmcgxJFv4bqhbi4KLy8gTG/huqFpIDI6IHUsIHYga2jDtG5nIGPDsyBxdWFuIGjhu4cgdOG7lSB0acOqbiAobuG6sW0ga2jDoWMgbmjDoW5oKSwgZ2nhuqMgc+G7rSB0aW4odSkgPCB0aW4odik6IAovLyAtIEtoaSDEkcOzIMSRxrDhu51uZyDEkWkgdOG7qyB1IMSR4bq/biB2IHPhur0gdMawxqFuZyDhu6luZyB24bubaSDEkW/huqFuIFt0b3V0KHUpLCB0aW4odildCi8vIC0gxJDhurdjIGJp4buHdCBuaOG7r25nIMSR4buJbmggdGh14buZYyDEkcaw4budbmcgxJFpIG7DoHkgc+G6vSB4deG6pXQgaGnhu4duIMSRw7puZyAxIGzhuqduIHRyb25nIMSRb+G6oW4sIAovLyAgIGPDsm4gbmjhu69uZyDEkeG7iW5oIGtow7RuZyB0aHXhu5ljIMSRxrDhu51uZyDEkWkgc+G6vSB4deG6pXQgaGnhu4duIMSRw7puZyAyIGzhuqduIHRyb25nIMSRb+G6oW4uIAovLyAtIEzGsHUgw70g4bufIHRyxrDhu51uZyBo4bujcCBuw6B5IGPhuqduIHjDqXQgcmnDqm5nIHRow6ptIGxjYSh1LCB2KSB2w6wgbGNhKHUsIHYpIHPhur0ga2jDtG5nIGPDsyB0cm9uZyDEkW/huqFuIG7DoHksCi8vCSBob+G6t2MgdHJvbmcgbeG7mXQgc+G7kSBiw6BpIHRhIGPDsyB0aOG7gyB0w6FjaCB0aMOgbmggMiDEkcaw4budbmcgxJFpIGzDoCBsY2EodSwgdikgLT4gdSB2w6AgbGNhKHUsIHYpIC0+IHYsIMSRxrBhIHbhu4EgbOG6oWkgbG/huqFpIDEuCgovLyAtIMOBcCBk4bulbmcgdsOgbyBiw6BpIG7DoHksIHbhu5tpIG3hu5dpIMSR4buJbmggdSB0YSBz4bq9ICthW3VdIHbDoG8gduG7iyB0csOtIHRpblt1XSB2w6AgLWFbdV0gdsOgbyB24buLIHRyw60gdG91dFt1XQovLyAtIEPDsm4gxJHhu4MgdMOtbmggdOG7lW5nIGPhu6dhIMSRxrDhu51uZyDEkWkgdOG7qyAxIChn4buRYykgxJHhur9uIHUgdGjDrCDEkcahbiBnaeG6o24gbMOgIHRhIHTDrW5oIHThu5VuZyDEkW/huqFuIFt0aW4oMSksIHRpbih1KV0gPSBbMSwgdGluKHUpXSAKLy8gLSBLaGkgxJHDsyBuaOG7r25nIMSR4buJbmgga2jDtG5nIHRodeG7mWMgxJHGsOG7nW5nIMSRaSAoeHXhuqV0IGhp4buHbiAyIGzhuqduIHRyb25nIMSRb+G6oW4pIMSR4buBdSBz4bq9IGLhu4sgdHJp4buHdCB0acOqdSwgCi8vICAgY8OybiBuaOG7r25nIMSR4buJbmggdGh14buZYyDEkcaw4budbmcgxJFpICh4deG6pXQgaGnhu4duIDEgbOG6p24gdHJvbmcgxJFv4bqhbikgdGjDrCBz4bq9IMSRxrDhu6NjIHTDrW5oIHbDoG8gdOG7lW5nLgovLyA9PiBGZW53aWNrIFRyZWUgLyBTZWdtZW50IFRyZWUKCmludCBuLCBxOyAKaW50IGFbTl07IAp2ZWN0b3I8aW50PiBhZGpbTl07IAoKaW50IHRpbltOXSwgdG91dFtOXSwgdGltZXI7ICAKCnZvaWQgZGZzKGludCB1LCBpbnQgcCkgewoJdGluW3VdID0gKyt0aW1lcjsgIAoJZm9yIChpbnQgdiA6IGFkalt1XSkgewoJCWlmICh2ID09IHApIGNvbnRpbnVlOyAgCgkJZGZzKHYsIHUpOyAKCX0KCXRvdXRbdV0gPSArK3RpbWVyOyAKfQoKc3RydWN0IEZlbndpY2sgewoJaW50IG47ICAKCXZlY3RvcjxsbD4gZnQ7ICAKCglGZW53aWNrKGludCBuKSA6IG4obikgewoJCWZ0LnJlc2l6ZShuLCAwKTsgCgl9CgoJdm9pZCB1cGRhdGUoaW50IHBvcywgaW50IHZhbCkgewoJCWZvciAoOyBwb3MgPCBuOyBwb3MgKz0gcG9zICYgKC1wb3MpKSB7CgkJCWZ0W3Bvc10gKz0gdmFsOyAKCQl9Cgl9CgoJbGwgZ2V0KGludCBwb3MpIHsKCQlsbCBhbnMgPSAwOyAgCgkJZm9yICg7IHBvcyA+IDA7IHBvcyAtPSBwb3MgJiAoLXBvcykpIHsKCQkJYW5zICs9IGZ0W3Bvc107IAoJCX0KCQlyZXR1cm4gYW5zOyAgCgl9Cn07IAoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgCQoJY2luID4+IG4gPj4gcTsgCglmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIGNpbiA+PiBhW3VdOyAKCglmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKCQlpbnQgdSwgdjsgCgkJY2luID4+IHUgPj4gdjsgCgkJYWRqW3VdLnB1c2hfYmFjayh2KTsgCgkJYWRqW3ZdLnB1c2hfYmFjayh1KTsgCgl9CgoJdGltZXIgPSAwOyAgIAoJZGZzKDEsIC0xKTsKCglGZW53aWNrIGZlbncoMiAqIG4gKyAxKTsgCglmb3IgKGludCB1ID0gMTsgdSA8PSBuOyB1KyspIHsKCQlmZW53LnVwZGF0ZSh0aW5bdV0sIGFbdV0pOyAgCgkJZmVudy51cGRhdGUodG91dFt1XSwgLWFbdV0pOyAKCX0KCgl3aGlsZSAocS0tKSB7CgkJaW50IHR5cGUsIHU7IAoJCWNpbiA+PiB0eXBlID4+IHU7ICAKCQkKCQlpZiAodHlwZSA9PSAxKSB7CgkJCWludCB2YWw7IGNpbiA+PiB2YWw7ICAgCgkJCWZlbncudXBkYXRlKHRpblt1XSwgLWFbdV0gKyB2YWwpOyAKCQkJZmVudy51cGRhdGUodG91dFt1XSwgYVt1XSAtIHZhbCk7IAoJCQlhW3VdID0gdmFsOyAKCQl9CgkJZWxzZSB7CgkJCWxsIGFucyA9IGZlbncuZ2V0KHRpblt1XSk7IAoJCQljb3V0IDw8IGFucyA8PCAnXG4nOyAKCQl9Cgl9Cn0J