// I can't tell you what it really is,
// I can only tell you what it feels like.
#include "bits/stdc++.h"
using namespace std;
// #define int long long
#define F first
#define S second
#define sz(x) ((int)x.size())
#define rep(i,a,n) for (int i = a; i <= n; ++i)
#define all(v) v.begin(), v.end()
#define pb push_back
#define P pair < int, int >
#define E cout << '\n'
typedef long long lll;
const int mod = 1e9 + 7;
const int N = 3e5 + 5;
vector < int > v[N];
int val[N], idx[N], ar[N];
int dist[N], ok = 1;
int sz[N], a[N];
void dfs(int x, int p, int lev) {
ar[ok] = x;
idx[x] = ok++;
sz[x] = 1;
dist[x] = lev;
for (int i : v[x]) {
if (i != p) {
dfs(i, x, lev + 1);
sz[x] += sz[i];
}
}
}
vector < int > ind[N];
vector < lll > bit[N];
void update(int r, int c, int val) {
while (c != 0 && c < sz(bit[r])) {
bit[r][c] += val;
c += c & -c;
}
}
lll get(int r, int c) {
lll ans = 0;
// assert(c <= bit[r].size());
while (c > 0) {
ans += bit[r][c];
c -= c&-c;
}
return ans;
}
inline void solve() {
int n, l, r;
cin >> n;
rep(i,2,n) {
cin >> l >> r;
v[l].pb(r);
v[r].pb(l);
}
dfs(1, 1, 0);
rep(i,1,n) {
cin >> l;
a[idx[i]] = l;
}
rep(i,0,n) {
ind[i].push_back(0);
}
rep(i,1,n) {
ind[dist[ar[i]]].push_back(i);
}
rep(i,0,n) {
if (ind[i].size() < 2) {
continue;
}
bit[i].resize(sz(ind[i]));
for (int j = 1; j < ind[i].size(); ++j) {
assert(bit[i].size() <= sz(ind[i]));
update(i, j, a[ind[i][j]]);
}
}
int q, f;
cin >> q;
while (q--) {
cin >> f >> l >> r;
if (f == 1) {
int index = idx[l];
assert(l>=1 && l<=n);
int distance = dist[l];
int bitMeIndex = lower_bound(all(ind[distance]), index) - ind[distance].begin();
assert(index == ind[distance][bitMeIndex]);
update(distance, bitMeIndex, -a[index]+r);
a[index] = r;
}
else {
int distNow = r + dist[l];
if (bit[distNow].size() < 2) {
cout << "0\n";
continue;
}
int lindex = idx[l], rindex = idx[l] + sz[l] - 1;
lll ans = 0;
if (lindex <= rindex) {
int ll = lower_bound(all(ind[distNow]), lindex) - ind[distNow].begin();
int rr = upper_bound(ind[distNow].begin()+ll, ind[distNow].end(), rindex) - ind[distNow].begin();
if (ll < rr) {
ans = get(distNow, rr-1) - get(distNow, ll-1);
}
}
cout << ans << '\n';
}
}
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cout.tie(NULL);
int t = 1;
//cin >> t; while(t--)
solve();
return 0;
}
Ly8gSSBjYW4ndCB0ZWxsIHlvdSB3aGF0IGl0IHJlYWxseSBpcywKLy8gSSBjYW4gb25seSB0ZWxsIHlvdSB3aGF0IGl0IGZlZWxzIGxpa2UuCiNpbmNsdWRlICJiaXRzL3N0ZGMrKy5oIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi8vICNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIHN6KHgpICgoaW50KXguc2l6ZSgpKQojZGVmaW5lIHJlcChpLGEsbikgZm9yIChpbnQgaSA9IGE7IGkgPD0gbjsgKytpKQojZGVmaW5lIGFsbCh2KSAgdi5iZWdpbigpLCB2LmVuZCgpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUCBwYWlyIDwgaW50LCBpbnQgPgojZGVmaW5lIEUgY291dCA8PCAnXG4nCnR5cGVkZWYgbG9uZyBsb25nIGxsbDsKCmNvbnN0IGludCBtb2QgPSAxZTkgKyA3Owpjb25zdCBpbnQgTiA9IDNlNSArIDU7Cgp2ZWN0b3IgPCBpbnQgPiB2W05dOwppbnQgdmFsW05dLCBpZHhbTl0sIGFyW05dOwppbnQgZGlzdFtOXSwgb2sgPSAxOwppbnQgc3pbTl0sIGFbTl07Cgp2b2lkIGRmcyhpbnQgeCwgaW50IHAsIGludCBsZXYpIHsKICAgIGFyW29rXSA9IHg7CiAgICBpZHhbeF0gPSBvaysrOwogICAgc3pbeF0gPSAxOwogICAgZGlzdFt4XSA9IGxldjsKICAgIGZvciAoaW50IGkgOiB2W3hdKSB7CiAgICAgICAgaWYgKGkgIT0gcCkgewogICAgICAgICAgICBkZnMoaSwgeCwgbGV2ICsgMSk7CiAgICAgICAgICAgIHN6W3hdICs9IHN6W2ldOwogICAgICAgIH0KICAgIH0KfQoKdmVjdG9yIDwgaW50ID4gaW5kW05dOwp2ZWN0b3IgPCBsbGwgPiBiaXRbTl07Cgp2b2lkIHVwZGF0ZShpbnQgciwgaW50IGMsIGludCB2YWwpIHsgCiAgICB3aGlsZSAoYyAhPSAwICYmIGMgPCBzeihiaXRbcl0pKSB7CiAgICAgICAgYml0W3JdW2NdICs9IHZhbDsKICAgICAgICBjICs9IGMgJiAtYzsgICAgICAgIAogICAgfSAgICAKfQoKbGxsIGdldChpbnQgciwgaW50IGMpIHsKICAgIGxsbCBhbnMgPSAwOwogICAgLy8gYXNzZXJ0KGMgPD0gYml0W3JdLnNpemUoKSk7CiAgICB3aGlsZSAoYyA+IDApIHsKICAgICAgICBhbnMgKz0gYml0W3JdW2NdOwogICAgICAgIGMgLT0gYyYtYzsKICAgIH0KICAgIHJldHVybiBhbnM7Cn0KCiAKaW5saW5lIHZvaWQgc29sdmUoKSB7CiAgIGludCBuLCBsLCByOwogICBjaW4gPj4gbjsKICAgcmVwKGksMixuKSB7CiAgICAgICBjaW4gPj4gbCA+PiByOyAgICAgICAKICAgICAgIHZbbF0ucGIocik7CiAgICAgICB2W3JdLnBiKGwpOwogICB9CiAgIGRmcygxLCAxLCAwKTsKICAgcmVwKGksMSxuKSB7CiAgICAgICBjaW4gPj4gbDsKICAgICAgIGFbaWR4W2ldXSA9IGw7ICAgICAgIAogICB9CiAgIHJlcChpLDAsbikgewogICAgICAgaW5kW2ldLnB1c2hfYmFjaygwKTsKICAgfQogICByZXAoaSwxLG4pIHsgICAgICAKICAgICAgIGluZFtkaXN0W2FyW2ldXV0ucHVzaF9iYWNrKGkpOwogICB9CiAgIHJlcChpLDAsbikgewogICAgICAgaWYgKGluZFtpXS5zaXplKCkgPCAyKSB7CiAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgfQogICAgICAgYml0W2ldLnJlc2l6ZShzeihpbmRbaV0pKTsgICAgCiAgICAgICBmb3IgKGludCBqID0gMTsgaiA8IGluZFtpXS5zaXplKCk7ICsraikgewogICAgICAgICAgIGFzc2VydChiaXRbaV0uc2l6ZSgpIDw9IHN6KGluZFtpXSkpOwogICAgICAgICAgIHVwZGF0ZShpLCBqLCBhW2luZFtpXVtqXV0pOyAgICAgICAgICAgCiAgICAgICB9CiAgIH0gICAKICAgaW50IHEsIGY7CiAgIGNpbiA+PiBxOwogICB3aGlsZSAocS0tKSB7CiAgICAgICBjaW4gPj4gZiA+PiBsID4+IHI7CiAgICAgICBpZiAoZiA9PSAxKSB7CiAgICAgICAgICAgaW50IGluZGV4ID0gaWR4W2xdOwogICAgICAgICAgIGFzc2VydChsPj0xICYmIGw8PW4pOwogICAgICAgICAgIGludCBkaXN0YW5jZSA9IGRpc3RbbF07CiAgICAgICAgICAgaW50IGJpdE1lSW5kZXggPSBsb3dlcl9ib3VuZChhbGwoaW5kW2Rpc3RhbmNlXSksIGluZGV4KSAtIGluZFtkaXN0YW5jZV0uYmVnaW4oKTsgCiAgICAgICAgICAgYXNzZXJ0KGluZGV4ID09IGluZFtkaXN0YW5jZV1bYml0TWVJbmRleF0pOwogICAgICAgICAgIHVwZGF0ZShkaXN0YW5jZSwgYml0TWVJbmRleCwgLWFbaW5kZXhdK3IpOyAgICAgICAgICAgCiAgICAgICAgICAgYVtpbmRleF0gPSByOwogICAgICAgfQogICAgICAgZWxzZSB7CiAgICAgICAgICAgaW50IGRpc3ROb3cgPSByICsgZGlzdFtsXTsgICAgICAgICAgIAogICAgICAgICAgIGlmIChiaXRbZGlzdE5vd10uc2l6ZSgpIDwgMikgewogICAgICAgICAgICAgICBjb3V0IDw8ICIwXG4iOwogICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICB9CiAgICAgICAgICAgaW50IGxpbmRleCA9IGlkeFtsXSwgcmluZGV4ID0gaWR4W2xdICsgc3pbbF0gLSAxOwogICAgICAgICAgIGxsbCBhbnMgPSAwOyAgICAgICAgICAgCiAgICAgICAgICAgaWYgKGxpbmRleCA8PSByaW5kZXgpIHsKICAgICAgICAgICAgICAgaW50IGxsID0gbG93ZXJfYm91bmQoYWxsKGluZFtkaXN0Tm93XSksIGxpbmRleCkgLSBpbmRbZGlzdE5vd10uYmVnaW4oKTsKICAgICAgICAgICAgICAgaW50IHJyID0gdXBwZXJfYm91bmQoaW5kW2Rpc3ROb3ddLmJlZ2luKCkrbGwsIGluZFtkaXN0Tm93XS5lbmQoKSwgcmluZGV4KSAtIGluZFtkaXN0Tm93XS5iZWdpbigpOwogICAgICAgICAgICAgICBpZiAobGwgPCBycikgewogICAgICAgICAgICAgICAgICAgYW5zID0gZ2V0KGRpc3ROb3csIHJyLTEpIC0gZ2V0KGRpc3ROb3csIGxsLTEpOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CiAgICAgICB9CiAgIH0KfQpzaWduZWQgbWFpbigpIHsKICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogIGNpbi50aWUoTlVMTCk7CiAgY291dC50aWUoTlVMTCk7CiAgaW50IHQgPSAxOwogIC8vY2luID4+IHQ7IHdoaWxlKHQtLSkKICBzb2x2ZSgpOwogIHJldHVybiAwOwp9