#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a),_b=(b); i<=_b; ++i)
#define fi first
#define se second
#define el "\n"
#define pb push_back
#define sz(a) (int)(a).size()
#define FILL(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
const int MAXN = 100000 + 5;
int n, Q;
ll w[MAXN];
vector<int> g[MAXN];
int parentArr[MAXN];
int tin[MAXN], tout[MAXN], subSize[MAXN], timerDFS;
ll bit1[MAXN], bit2[MAXN];
void bitAdd(ll bit[], int idx, ll val){
while(idx <= n){
bit[idx] += val;
idx += idx & -idx;
}
}
ll bitSum(ll bit[], int idx){
ll res = 0;
while(idx > 0){
res += bit[idx];
idx -= idx & -idx;
}
return res;
}
void rangeAdd(int l, int r, ll val){
if(l > r) return;
bitAdd(bit1, l, val);
bitAdd(bit1, r + 1, -val);
bitAdd(bit2, l, val * (l - 1));
bitAdd(bit2, r + 1, -val * r);
}
ll prefixSum(int idx){
ll s1 = bitSum(bit1, idx);
ll s2 = bitSum(bit2, idx);
return s1 * idx - s2;
}
ll rangeSum(int l, int r){
if(l > r) return 0;
return prefixSum(r) - prefixSum(l - 1);
}
void dfs(int u, int p){
parentArr[u] = p;
tin[u] = ++timerDFS;
subSize[u] = 1;
for(int i = 0; i < sz(g[u]); ++i){
int v = g[u][i];
if(v == p) continue;
dfs(v, u);
subSize[u] += subSize[v];
}
tout[u] = timerDFS;
}
ll totalWeight(){
return rangeSum(1, n);
}
ll subtreeSum(int u){
return rangeSum(tin[u], tout[u]);
}
int adjustCentroid(int cen){
while(true){
ll tot = totalWeight();
if(tot == 0) return 1;
ll bestW = 0;
int best = -1;
if(parentArr[cen] != 0){
ll side = tot - subtreeSum(cen);
if(side > bestW){
bestW = side;
best = parentArr[cen];
}
}
for(int i = 0; i < sz(g[cen]); ++i){
int v = g[cen][i];
if(v == parentArr[cen]) continue;
ll side = subtreeSum(v);
if(side > bestW){
bestW = side;
best = v;
}
}
if(best == -1 || bestW * 2 <= tot) break;
cen = best;
}
return cen;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
if(!(cin >> n >> Q)) return 0;
FOR(i,1,n) cin >> w[i];
FOR(i,1,n-1){
int u, v;
cin >> u >> v;
g[u].pb(v);
g[v].pb(u);
}
timerDFS = 0;
dfs(1, 0);
FOR(i,1,n){
rangeAdd(tin[i], tin[i], w[i]);
}
int centroid = 1;
centroid = adjustCentroid(centroid);
while(Q--){
int type, u;
ll c;
cin >> type >> u >> c;
if(type == 1){
rangeAdd(tin[u], tin[u], c);
} else {
rangeAdd(tin[u], tout[u], c);
}
centroid = adjustCentroid(centroid);
cout << centroid << el;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksYSxiKSBmb3IoaW50IGk9KGEpLF9iPShiKTsgaTw9X2I7ICsraSkKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBzeihhKSAoaW50KShhKS5zaXplKCkKI2RlZmluZSBGSUxMKGEseCkgbWVtc2V0KGEseCxzaXplb2YoYSkpCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKY29uc3QgaW50IE1BWE4gPSAxMDAwMDAgKyA1OwoKaW50IG4sIFE7CmxsIHdbTUFYTl07CnZlY3RvcjxpbnQ+IGdbTUFYTl07CmludCBwYXJlbnRBcnJbTUFYTl07CmludCB0aW5bTUFYTl0sIHRvdXRbTUFYTl0sIHN1YlNpemVbTUFYTl0sIHRpbWVyREZTOwoKbGwgYml0MVtNQVhOXSwgYml0MltNQVhOXTsKCnZvaWQgYml0QWRkKGxsIGJpdFtdLCBpbnQgaWR4LCBsbCB2YWwpewp3aGlsZShpZHggPD0gbil7CmJpdFtpZHhdICs9IHZhbDsKaWR4ICs9IGlkeCAmIC1pZHg7Cn0KfQoKbGwgYml0U3VtKGxsIGJpdFtdLCBpbnQgaWR4KXsKbGwgcmVzID0gMDsKd2hpbGUoaWR4ID4gMCl7CnJlcyArPSBiaXRbaWR4XTsKaWR4IC09IGlkeCAmIC1pZHg7Cn0KcmV0dXJuIHJlczsKfQoKdm9pZCByYW5nZUFkZChpbnQgbCwgaW50IHIsIGxsIHZhbCl7CmlmKGwgPiByKSByZXR1cm47CmJpdEFkZChiaXQxLCBsLCB2YWwpOwpiaXRBZGQoYml0MSwgciArIDEsIC12YWwpOwpiaXRBZGQoYml0MiwgbCwgdmFsICogKGwgLSAxKSk7CmJpdEFkZChiaXQyLCByICsgMSwgLXZhbCAqIHIpOwp9CgpsbCBwcmVmaXhTdW0oaW50IGlkeCl7CmxsIHMxID0gYml0U3VtKGJpdDEsIGlkeCk7CmxsIHMyID0gYml0U3VtKGJpdDIsIGlkeCk7CnJldHVybiBzMSAqIGlkeCAtIHMyOwp9CgpsbCByYW5nZVN1bShpbnQgbCwgaW50IHIpewppZihsID4gcikgcmV0dXJuIDA7CnJldHVybiBwcmVmaXhTdW0ocikgLSBwcmVmaXhTdW0obCAtIDEpOwp9Cgp2b2lkIGRmcyhpbnQgdSwgaW50IHApewpwYXJlbnRBcnJbdV0gPSBwOwp0aW5bdV0gPSArK3RpbWVyREZTOwpzdWJTaXplW3VdID0gMTsKZm9yKGludCBpID0gMDsgaSA8IHN6KGdbdV0pOyArK2kpewppbnQgdiA9IGdbdV1baV07CmlmKHYgPT0gcCkgY29udGludWU7CmRmcyh2LCB1KTsKc3ViU2l6ZVt1XSArPSBzdWJTaXplW3ZdOwp9CnRvdXRbdV0gPSB0aW1lckRGUzsKfQoKbGwgdG90YWxXZWlnaHQoKXsKcmV0dXJuIHJhbmdlU3VtKDEsIG4pOwp9CgpsbCBzdWJ0cmVlU3VtKGludCB1KXsKcmV0dXJuIHJhbmdlU3VtKHRpblt1XSwgdG91dFt1XSk7Cn0KCmludCBhZGp1c3RDZW50cm9pZChpbnQgY2VuKXsKd2hpbGUodHJ1ZSl7CmxsIHRvdCA9IHRvdGFsV2VpZ2h0KCk7CmlmKHRvdCA9PSAwKSByZXR1cm4gMTsKbGwgYmVzdFcgPSAwOwppbnQgYmVzdCA9IC0xOwoKICAgIGlmKHBhcmVudEFycltjZW5dICE9IDApewogICAgICAgIGxsIHNpZGUgPSB0b3QgLSBzdWJ0cmVlU3VtKGNlbik7CiAgICAgICAgaWYoc2lkZSA+IGJlc3RXKXsKICAgICAgICAgICAgYmVzdFcgPSBzaWRlOwogICAgICAgICAgICBiZXN0ID0gcGFyZW50QXJyW2Nlbl07CiAgICAgICAgfQogICAgfQoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzeihnW2Nlbl0pOyArK2kpewogICAgICAgIGludCB2ID0gZ1tjZW5dW2ldOwogICAgICAgIGlmKHYgPT0gcGFyZW50QXJyW2Nlbl0pIGNvbnRpbnVlOwogICAgICAgIGxsIHNpZGUgPSBzdWJ0cmVlU3VtKHYpOwogICAgICAgIGlmKHNpZGUgPiBiZXN0Vyl7CiAgICAgICAgICAgIGJlc3RXID0gc2lkZTsKICAgICAgICAgICAgYmVzdCA9IHY7CiAgICAgICAgfQogICAgfQoKICAgIGlmKGJlc3QgPT0gLTEgfHwgYmVzdFcgKiAyIDw9IHRvdCkgYnJlYWs7CiAgICBjZW4gPSBiZXN0Owp9CnJldHVybiBjZW47Cgp9CgppbnQgbWFpbigpewppb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CmNpbi50aWUoTlVMTCk7CmNvdXQudGllKE5VTEwpOwoKaWYoIShjaW4gPj4gbiA+PiBRKSkgcmV0dXJuIDA7CkZPUihpLDEsbikgY2luID4+IHdbaV07CkZPUihpLDEsbi0xKXsKICAgIGludCB1LCB2OwogICAgY2luID4+IHUgPj4gdjsKICAgIGdbdV0ucGIodik7CiAgICBnW3ZdLnBiKHUpOwp9Cgp0aW1lckRGUyA9IDA7CmRmcygxLCAwKTsKCkZPUihpLDEsbil7CiAgICByYW5nZUFkZCh0aW5baV0sIHRpbltpXSwgd1tpXSk7Cn0KCmludCBjZW50cm9pZCA9IDE7CmNlbnRyb2lkID0gYWRqdXN0Q2VudHJvaWQoY2VudHJvaWQpOwoKd2hpbGUoUS0tKXsKICAgIGludCB0eXBlLCB1OwogICAgbGwgYzsKICAgIGNpbiA+PiB0eXBlID4+IHUgPj4gYzsKICAgIGlmKHR5cGUgPT0gMSl7CiAgICAgICAgcmFuZ2VBZGQodGluW3VdLCB0aW5bdV0sIGMpOwogICAgfSBlbHNlIHsKICAgICAgICByYW5nZUFkZCh0aW5bdV0sIHRvdXRbdV0sIGMpOwogICAgfQogICAgY2VudHJvaWQgPSBhZGp1c3RDZW50cm9pZChjZW50cm9pZCk7CiAgICBjb3V0IDw8IGNlbnRyb2lkIDw8IGVsOwp9CgpyZXR1cm4gMDsKCn0K