#include <bits/stdc++.h>
using namespace std;
const int MaxN = 1e5 + 10;
int N, Q, id;
vector <int> adj[MaxN];
int health[MaxN], start[MaxN], finish[MaxN], node[MaxN];
class SegmentTree {
private :
int minhealth[MaxN << 2], Count[MaxN << 2], poison[MaxN << 2];
public:
#define mid ((l + r) >> 1)
void build(int k, int l, int r) {
if (l == r) {
poison[k] = 0;
minhealth[k] = health[node[l]];
Count[k] = 1;
return;
}
build(2 * k, l, mid);
build((2 * k) + 1, mid + 1, r);
minhealth[k] = min(minhealth[2 * k], minhealth[(2 * k) + 1]);
Count[k] = Count[2 * k] + Count[(2 * k) + 1];
poison[k] = 0;
}
void lazy(int k, int l, int r) {
if (!poison[k]) return;
poison[l] += poison[k]; poison[r] += poison[k];
minhealth[l] -= poison[k]; minhealth[r] -= poison[k];
poison[k] = 0;
}
void update(int k, int l, int r, int i, int j, int value) {
if (l > j || r < i) return;
if (i <= l && r <= j) {
poison[k] += value;
minhealth[k] -= value;
return;
}
lazy(k, 2 * k, (2 * k) + 1);
update(2 * k, l, mid, i, j, value);
update((2 * k) + 1, mid + 1, r, i, j, value);
minhealth[k] = min(minhealth[2 * k], minhealth[(2 * k) + 1]);
}
int get(int k, int l, int r, int i, int j) {
if (l > j || r < i) return 0;
lazy(k, 2 * k, (2 * k) + 1);
if (l == r) {
if (minhealth[k] > 0) return Count[k];
minhealth[k] = 2e9 + 7;
return Count[k] = 0;
}
if (i <= l && r <= j) {
if (minhealth[k] <= 0) {
get(2 * k, l, mid, i, j);
get((2 * k) + 1, mid + 1, r, i, j);
minhealth[k] = min(minhealth[2 * k], minhealth[(2 * k) + 1]);
Count[k] = Count[2 * k] + Count[(2 * k) + 1];
}
return Count[k];
}
int x = get(2 * k, l, mid, i, j);
int y = get((2 * k) + 1, mid + 1, r, i, j);
minhealth[k] = min(minhealth[2 * k], minhealth[(2 * k) + 1]);
Count[k] = Count[2 * k] + Count[(2 * k) + 1];
return x + y;
}
} IT;
void Enter() {
cin >> N;
for (int i = 1; i <= N; ++i) {
int parent; cin >> health[i] >> parent;
adj[parent].push_back(i);
}
}
void DFS(int u) {
node[id] = u; start[u] = id++;
for (int i = 0; i < adj[u].size(); ++i)
DFS(adj[u][i]);
finish[u] = id - 1;
}
void Process() {
cin >> Q;
IT.build(1, 0, N);
while (Q--) {
int type; cin >> type;
if (type == 1) {
int A, X; cin >> A >> X;
IT.update(1, 0, N, start[A] + 1, finish[A], X);
} else {
int A; cin >> A;
cout << IT.get(1, 0, N, start[A] + 1, finish[A]) << "\n";
}
}
}
int main() {
// freopen("input.in", "r", stdin);
//freopen("output.out", "w", stdout);
Enter();
DFS(0);
Process();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTWF4TiA9IDFlNSArIDEwOwoKaW50IE4sIFEsIGlkOwp2ZWN0b3IgPGludD4gYWRqW01heE5dOwppbnQgaGVhbHRoW01heE5dLCBzdGFydFtNYXhOXSwgZmluaXNoW01heE5dLCBub2RlW01heE5dOwoKY2xhc3MgU2VnbWVudFRyZWUgewpwcml2YXRlIDoKICAgIGludCBtaW5oZWFsdGhbTWF4TiA8PCAyXSwgQ291bnRbTWF4TiA8PCAyXSwgcG9pc29uW01heE4gPDwgMl07CnB1YmxpYzoKICAgICNkZWZpbmUgbWlkICgobCArIHIpID4+IDEpCiAgICB2b2lkIGJ1aWxkKGludCBrLCBpbnQgbCwgaW50IHIpIHsKICAgICAgICBpZiAobCA9PSByKSB7CiAgICAgICAgICAgIHBvaXNvbltrXSA9IDA7CiAgICAgICAgICAgIG1pbmhlYWx0aFtrXSA9IGhlYWx0aFtub2RlW2xdXTsKICAgICAgICAgICAgQ291bnRba10gPSAxOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBidWlsZCgyICogaywgbCwgbWlkKTsKICAgICAgICBidWlsZCgoMiAqIGspICsgMSwgbWlkICsgMSwgcik7CgogICAgICAgIG1pbmhlYWx0aFtrXSA9IG1pbihtaW5oZWFsdGhbMiAqIGtdLCBtaW5oZWFsdGhbKDIgKiBrKSArIDFdKTsKICAgICAgICBDb3VudFtrXSA9IENvdW50WzIgKiBrXSArIENvdW50WygyICogaykgKyAxXTsKICAgICAgICBwb2lzb25ba10gPSAwOwogICAgfQoKICAgIHZvaWQgbGF6eShpbnQgaywgaW50IGwsIGludCByKSB7CiAgICAgICAgaWYgKCFwb2lzb25ba10pICByZXR1cm47CiAgICAgICAgcG9pc29uW2xdICs9IHBvaXNvbltrXTsgICAgIHBvaXNvbltyXSArPSBwb2lzb25ba107CiAgICAgICAgbWluaGVhbHRoW2xdIC09IHBvaXNvbltrXTsgIG1pbmhlYWx0aFtyXSAtPSBwb2lzb25ba107CiAgICAgICAgcG9pc29uW2tdID0gMDsKICAgIH0KCiAgICB2b2lkIHVwZGF0ZShpbnQgaywgaW50IGwsIGludCByLCBpbnQgaSwgaW50IGosIGludCB2YWx1ZSkgewogICAgICAgIGlmIChsID4gaiB8fCByIDwgaSkgcmV0dXJuOwogICAgICAgIGlmIChpIDw9IGwgJiYgciA8PSBqKSB7CiAgICAgICAgICAgIHBvaXNvbltrXSArPSB2YWx1ZTsKICAgICAgICAgICAgbWluaGVhbHRoW2tdIC09IHZhbHVlOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGxhenkoaywgMiAqIGssICgyICogaykgKyAxKTsKCiAgICAgICAgdXBkYXRlKDIgKiBrLCBsLCBtaWQsIGksIGosIHZhbHVlKTsKICAgICAgICB1cGRhdGUoKDIgKiBrKSArIDEsIG1pZCArIDEsIHIsIGksIGosIHZhbHVlKTsKICAgICAgICBtaW5oZWFsdGhba10gPSBtaW4obWluaGVhbHRoWzIgKiBrXSwgbWluaGVhbHRoWygyICogaykgKyAxXSk7CiAgICB9CgogICAgaW50IGdldChpbnQgaywgaW50IGwsIGludCByLCBpbnQgaSwgaW50IGopIHsKICAgICAgICBpZiAobCA+IGogfHwgciA8IGkpIHJldHVybiAwOwogICAgICAgIGxhenkoaywgMiAqIGssICgyICogaykgKyAxKTsKICAgICAgICBpZiAobCA9PSByKSB7CiAgICAgICAgICAgIGlmIChtaW5oZWFsdGhba10gPiAwKSByZXR1cm4gQ291bnRba107CiAgICAgICAgICAgIG1pbmhlYWx0aFtrXSA9IDJlOSArIDc7CiAgICAgICAgICAgIHJldHVybiBDb3VudFtrXSA9IDA7CiAgICAgICAgfQoKICAgICAgICBpZiAoaSA8PSBsICYmIHIgPD0gaikgewogICAgICAgICAgICBpZiAobWluaGVhbHRoW2tdIDw9IDApIHsKICAgICAgICAgICAgICAgIGdldCgyICogaywgbCwgbWlkLCBpLCBqKTsKICAgICAgICAgICAgICAgIGdldCgoMiAqIGspICsgMSwgbWlkICsgMSwgciwgaSwgaik7CiAgICAgICAgICAgICAgICBtaW5oZWFsdGhba10gPSBtaW4obWluaGVhbHRoWzIgKiBrXSwgbWluaGVhbHRoWygyICogaykgKyAxXSk7CiAgICAgICAgICAgICAgICBDb3VudFtrXSA9IENvdW50WzIgKiBrXSArIENvdW50WygyICogaykgKyAxXTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gQ291bnRba107CiAgICAgICAgfQoKICAgICAgICBpbnQgeCA9IGdldCgyICogaywgbCwgbWlkLCBpLCBqKTsKICAgICAgICBpbnQgeSA9IGdldCgoMiAqIGspICsgMSwgbWlkICsgMSwgciwgaSwgaik7CiAgICAgICAgbWluaGVhbHRoW2tdID0gbWluKG1pbmhlYWx0aFsyICoga10sIG1pbmhlYWx0aFsoMiAqIGspICsgMV0pOwogICAgICAgIENvdW50W2tdID0gQ291bnRbMiAqIGtdICsgQ291bnRbKDIgKiBrKSArIDFdOwogICAgICAgIHJldHVybiB4ICsgeTsKICAgIH0KfSBJVDsKCnZvaWQgRW50ZXIoKSB7CiAgICBjaW4gPj4gTjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47ICsraSkgewogICAgICAgIGludCBwYXJlbnQ7IGNpbiA+PiBoZWFsdGhbaV0gPj4gcGFyZW50OwogICAgICAgIGFkaltwYXJlbnRdLnB1c2hfYmFjayhpKTsKICAgIH0KfQoKdm9pZCBERlMoaW50IHUpIHsKICAgIG5vZGVbaWRdID0gdTsgc3RhcnRbdV0gPSBpZCsrOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhZGpbdV0uc2l6ZSgpOyArK2kpCiAgICAgICAgREZTKGFkalt1XVtpXSk7CiAgICBmaW5pc2hbdV0gPSBpZCAtIDE7Cn0KCnZvaWQgUHJvY2VzcygpIHsKICAgIGNpbiA+PiBROwogICAgSVQuYnVpbGQoMSwgMCwgTik7CiAgICB3aGlsZSAoUS0tKSB7CiAgICAgICAgaW50IHR5cGU7IGNpbiA+PiB0eXBlOwogICAgICAgIGlmICh0eXBlID09IDEpIHsKICAgICAgICAgICAgaW50IEEsIFg7IGNpbiA+PiBBID4+IFg7CiAgICAgICAgICAgIElULnVwZGF0ZSgxLCAwLCBOLCBzdGFydFtBXSArIDEsIGZpbmlzaFtBXSwgWCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaW50IEE7IGNpbiA+PiBBOwogICAgICAgICAgICBjb3V0IDw8IElULmdldCgxLCAwLCBOLCBzdGFydFtBXSArIDEsIGZpbmlzaFtBXSkgPDwgIlxuIjsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkgewogIC8vICBmcmVvcGVuKCJpbnB1dC5pbiIsICJyIiwgc3RkaW4pOwogICAgLy9mcmVvcGVuKCJvdXRwdXQub3V0IiwgInciLCBzdGRvdXQpOwoKICAgIEVudGVyKCk7CiAgICBERlMoMCk7CiAgICBQcm9jZXNzKCk7CgogICAgcmV0dXJuIDA7Cn0K