#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long ll;
#define SZ(a) (int)(a).size()
typedef ll E;
struct nd {
typedef nd* ndp;
E e;
E lazy;
ndp p;
ndp c[2];
nd(E e, ndp p = NULL, ndp l = NULL, ndp r = NULL) : e(e), p(p) {
c[0] = l;
c[1] = r;
lazy = 0;
}
};
typedef nd* ndp;
int ic(ndp x, ndp y) {
return !y ? -1
: x == y->c[0] ? 0
: x == y->c[1] ? 1
: -1
;
}
void apply_lazy(ndp x) {
for (int i = 0; i < 2; i++) {
auto v = x->c[i];
if (v) {
v->lazy += x->lazy;
}
}
x->e += x->lazy;
x->lazy = 0;
}
void rot(ndp y, int i) {
auto z = y->p;
auto x = y->c[i];
auto w = x->c[i ^ 1];
auto j = ic(y, z);
apply_lazy(x);
if (j != -1) {
z->c[j] = x;
}
x->p = z;
x->c[i ^ 1] = y;
y->p = x;
y->c[i] = w;
if (w) {
w->p = y;
}
x->lazy = y->lazy;
y->lazy = 0;
}
void splay(ndp x) {
while (true) {
auto y = x->p;
auto i = ic(x, y);
if (i == -1) break;
auto z = y->p;
auto j = ic(y, z);
if (j == -1) {
rot(y, i);
break;
}
if (i == j) {
rot(z, j);
rot(y, i);
}
else {
rot(y, i);
rot(z, j);
}
}
}
void splice(ndp x) {
auto y = x->p;
apply_lazy(y);
y->c[0] = x;
}
void splay_splice(ndp x) {
for (auto y = x; y; y = y->p) {
splay(y);
}
for (auto y = x; y->p; y = y->p) {
splice(y);
}
splay(x);
}
void link(ndp x, ndp y) {
splay_splice(y);
splay(x);
x->p = y;
auto cnt = x->e+x->lazy;
y->e += cnt;
auto w = y->c[1];
if (w) {
w->lazy += cnt;
}
}
void cut(ndp x) {
splay_splice(x);
auto w = x->c[1];
x->c[1] = NULL;
w->p = NULL;
w->lazy -= x->e;
}
vector<ndp> a;
vector<vector<int>> al;
vector<bool> ons;
vector<int> ps;
void dfs(int u, int p) {
ps[u] = p;
link(a[u], a[p]);
for (auto v: al[u]) if (v != p) {
dfs(v, u);
}
}
void flip(int u) {
ons[u] = !ons[u];
if (ons[u]) {
cut(a[u]);
}
else {
link(a[u], a[ps[u]]);
}
}
E query(int u) {
auto x = a[u];
splay_splice(x);
return x->e+x->lazy;
}
int main() {
cin.sync_with_stdio(false);
int n;
cin >> n;
a.resize(n+1);
a[n] = new nd(0);
for (int i = 0; i < n; i++) {
int e;
cin >> e;
a[i] = new nd(e);
}
al.assign(n, {});
for (int i = 0; i < n-1; i++) {
int u, v;
cin >> u >> v;
u--; v--;
al[u].emplace_back(v);
al[v].emplace_back(u);
}
ps.resize(n);
dfs(0, n);
ons.assign(n, false);
int nq;
cin >> nq;
for (int iq = 0; iq < nq; iq++) {
int t, u;
cin >> t >> u;
u--;
if (t == 1) {
flip(u);
}
else {
auto ans = ons[u] ? 0 : query(u);
printf("%lld\n", ans);
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKI2RlZmluZSBTWihhKSAoaW50KShhKS5zaXplKCkKIAp0eXBlZGVmIGxsIEU7CnN0cnVjdCBuZCB7Cgl0eXBlZGVmIG5kKiBuZHA7CglFIGU7CglFIGxhenk7CgluZHAgcDsKCW5kcCBjWzJdOwoJbmQoRSBlLCBuZHAgcCA9IE5VTEwsIG5kcCBsID0gTlVMTCwgbmRwIHIgPSBOVUxMKSA6IGUoZSksIHAocCkgewoJCWNbMF0gPSBsOwoJCWNbMV0gPSByOwoJCWxhenkgPSAwOwoJfQp9Owp0eXBlZGVmIG5kKiBuZHA7CiAKaW50IGljKG5kcCB4LCBuZHAgeSkgewoJcmV0dXJuICF5ID8gLTEKCQk6IHggPT0geS0+Y1swXSA/IDAKCQk6IHggPT0geS0+Y1sxXSA/IDEKCQk6IC0xCgkJOwp9CiAKdm9pZCBhcHBseV9sYXp5KG5kcCB4KSB7Cglmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgewoJCWF1dG8gdiA9IHgtPmNbaV07CgkJaWYgKHYpIHsKCQkJdi0+bGF6eSArPSB4LT5sYXp5OwoJCX0KCX0KCXgtPmUgKz0geC0+bGF6eTsKCXgtPmxhenkgPSAwOwp9CiAKdm9pZCByb3QobmRwIHksIGludCBpKSB7CglhdXRvIHogPSB5LT5wOwoJYXV0byB4ID0geS0+Y1tpXTsKCWF1dG8gdyA9IHgtPmNbaSBeIDFdOwoJYXV0byBqID0gaWMoeSwgeik7CglhcHBseV9sYXp5KHgpOwoJaWYgKGogIT0gLTEpIHsKCQl6LT5jW2pdID0geDsKCX0KCXgtPnAgPSB6OwoJeC0+Y1tpIF4gMV0gPSB5OwoJeS0+cCA9IHg7Cgl5LT5jW2ldID0gdzsKCWlmICh3KSB7CgkJdy0+cCA9IHk7Cgl9Cgl4LT5sYXp5ID0geS0+bGF6eTsKCXktPmxhenkgPSAwOwp9CiAKdm9pZCBzcGxheShuZHAgeCkgewoJd2hpbGUgKHRydWUpIHsKCQlhdXRvIHkgPSB4LT5wOwoJCWF1dG8gaSA9IGljKHgsIHkpOwoJCWlmIChpID09IC0xKSBicmVhazsKCQlhdXRvIHogPSB5LT5wOwoJCWF1dG8gaiA9IGljKHksIHopOwoJCWlmIChqID09IC0xKSB7CgkJCXJvdCh5LCBpKTsKCQkJYnJlYWs7CgkJfQoJCWlmIChpID09IGopIHsKCQkJcm90KHosIGopOwoJCQlyb3QoeSwgaSk7CgkJfQoJCWVsc2UgewoJCQlyb3QoeSwgaSk7CgkJCXJvdCh6LCBqKTsKCQl9Cgl9Cn0KIAp2b2lkIHNwbGljZShuZHAgeCkgewoJYXV0byB5ID0geC0+cDsKCWFwcGx5X2xhenkoeSk7Cgl5LT5jWzBdID0geDsKfQogCnZvaWQgc3BsYXlfc3BsaWNlKG5kcCB4KSB7Cglmb3IgKGF1dG8geSA9IHg7IHk7IHkgPSB5LT5wKSB7CgkJc3BsYXkoeSk7Cgl9Cglmb3IgKGF1dG8geSA9IHg7IHktPnA7IHkgPSB5LT5wKSB7CgkJc3BsaWNlKHkpOwoJfQoJc3BsYXkoeCk7Cn0KIAp2b2lkIGxpbmsobmRwIHgsIG5kcCB5KSB7CglzcGxheV9zcGxpY2UoeSk7CglzcGxheSh4KTsKCXgtPnAgPSB5OwoJYXV0byBjbnQgPSB4LT5lK3gtPmxhenk7Cgl5LT5lICs9IGNudDsKCWF1dG8gdyA9IHktPmNbMV07CglpZiAodykgewoJCXctPmxhenkgKz0gY250OwoJfQp9CiAKdm9pZCBjdXQobmRwIHgpIHsKCXNwbGF5X3NwbGljZSh4KTsKCWF1dG8gdyA9IHgtPmNbMV07Cgl4LT5jWzFdID0gTlVMTDsKCXctPnAgPSBOVUxMOwoJdy0+bGF6eSAtPSB4LT5lOwp9CiAKdmVjdG9yPG5kcD4gYTsKdmVjdG9yPHZlY3RvcjxpbnQ+PiBhbDsKdmVjdG9yPGJvb2w+IG9uczsKdmVjdG9yPGludD4gcHM7CiAKdm9pZCBkZnMoaW50IHUsIGludCBwKSB7Cglwc1t1XSA9IHA7CglsaW5rKGFbdV0sIGFbcF0pOwoJZm9yIChhdXRvIHY6IGFsW3VdKSBpZiAodiAhPSBwKSB7CgkJZGZzKHYsIHUpOwoJfQp9CiAKdm9pZCBmbGlwKGludCB1KSB7CglvbnNbdV0gPSAhb25zW3VdOwoJaWYgKG9uc1t1XSkgewoJCWN1dChhW3VdKTsKCX0KCWVsc2UgewoJCWxpbmsoYVt1XSwgYVtwc1t1XV0pOwoJfQp9CiAKRSBxdWVyeShpbnQgdSkgewoJYXV0byB4ID0gYVt1XTsKCXNwbGF5X3NwbGljZSh4KTsKCXJldHVybiB4LT5lK3gtPmxhenk7Cn0KIAppbnQgbWFpbigpIHsKCWNpbi5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJaW50IG47CgljaW4gPj4gbjsKCWEucmVzaXplKG4rMSk7CglhW25dID0gbmV3IG5kKDApOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQlpbnQgZTsKCQljaW4gPj4gZTsKCQlhW2ldID0gbmV3IG5kKGUpOwoJfQoJYWwuYXNzaWduKG4sIHt9KTsKCWZvciAoaW50IGkgPSAwOyBpIDwgbi0xOyBpKyspIHsKCQlpbnQgdSwgdjsKCQljaW4gPj4gdSA+PiB2OwoJCXUtLTsgdi0tOwoJCWFsW3VdLmVtcGxhY2VfYmFjayh2KTsKCQlhbFt2XS5lbXBsYWNlX2JhY2sodSk7Cgl9Cglwcy5yZXNpemUobik7CglkZnMoMCwgbik7CglvbnMuYXNzaWduKG4sIGZhbHNlKTsKCWludCBucTsKCWNpbiA+PiBucTsKCWZvciAoaW50IGlxID0gMDsgaXEgPCBucTsgaXErKykgewoJCWludCB0LCB1OwoJCWNpbiA+PiB0ID4+IHU7CgkJdS0tOwoJCWlmICh0ID09IDEpIHsKCQkJZmxpcCh1KTsKCQl9CgkJZWxzZSB7CgkJCWF1dG8gYW5zID0gb25zW3VdID8gMCA6IHF1ZXJ5KHUpOwoJCQlwcmludGYoIiVsbGRcbiIsIGFucyk7CgkJfQoJfQoJcmV0dXJuIDA7Cn0KIA==