#include <bits/stdc++.h>
using namespace std;
int n, q;
struct sec
{
int l, r;
};
sec merge(sec a, sec b)
{
sec c;
c.l = min(a.l, b.l);
c.r = max(a.r, b.r);
return c;
}
struct node
{
int id, k, ls, rs;
sec sc;
};
node a[200010];
vector <int> e[200010];
int fa[200010];
void find_lr(int x)
{
for (auto y : e[x])
if (y != fa[x])
find_lr(y);
sec now;
if (x == 1)
now = (sec){-2000000000, 2000000000};
else
now = (sec){a[x].k, a[x].k};
for (auto y : e[x])
if (y != fa[x])
now = merge(now, a[y].sc);
a[x].sc = now;
}
bool check(sec a, sec b)
{
if (b.l <= a.l && a.r <= b.r)
return 0;
if (a.r < b.l)
return 0;
if (a.l > b.r)
return 0;
return 1;
}
int output = 0;
sec Wen;
void run(int x)
{
output++;
if (x == 0)
return ;
if (check(a[x].sc, Wen) == 0)
return ;
run(a[x].ls);
run(a[x].rs);
}
map <pair<int, int>, int> mem;
int mapp[2010];
int main()
{
freopen("two.in", "r", stdin);
freopen("two.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++)
{
a[i].id = i;
cin >> a[i].ls >> a[i].rs >> a[i].k;
if (a[i].ls != 0)
{
e[i].push_back(a[i].ls);
e[a[i].ls].push_back(i);
fa[a[i].ls] = i;
}
if (a[i].rs != 0)
{
e[i].push_back(a[i].rs);
e[a[i].rs].push_back(i);
fa[a[i].rs] = i;
}
mapp[i] = a[i].k;
}
sort (mapp + 1, mapp + n + 1);
a[0].sc = (sec){-2000000000, -2000000000};
find_lr(1);
int q;
cin >> q;
if (n <= 2000 && q <= 2000)
{
while (q--)
{
int L, R;
cin >> L >> R;
Wen = (sec){L, R};
output = 0;
run(1);
cout << output << endl;
}
return 0;
}
while (q--)
{
int L, R;
cin >> L >> R;
Wen = (sec){L, R};
pair <int, int> memchk;
memchk.first = lower_bound(mapp + 1, mapp + n + 1, L) - mapp;
memchk.second = upper_bound(mapp + 1, mapp + n + 1, R) - mapp - 1;
if (mem.find(memchk) != mem.end())
{
cout << mem[memchk] << endl;
}
else
{
output = 0;
run(1);
cout << output << endl;
mem[memchk] = output;
}
// cout << memchk.first << " " << memchk.second << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBxOwpzdHJ1Y3Qgc2VjCnsKCWludCBsLCByOwp9OwpzZWMgbWVyZ2Uoc2VjIGEsIHNlYyBiKQp7CglzZWMgYzsKCWMubCA9IG1pbihhLmwsIGIubCk7CgljLnIgPSBtYXgoYS5yLCBiLnIpOwoJcmV0dXJuIGM7Cn0Kc3RydWN0IG5vZGUKewoJaW50IGlkLCBrLCBscywgcnM7CglzZWMgc2M7Cn07Cm5vZGUgYVsyMDAwMTBdOwp2ZWN0b3IgPGludD4gZVsyMDAwMTBdOwppbnQgZmFbMjAwMDEwXTsKdm9pZCBmaW5kX2xyKGludCB4KQp7Cglmb3IgKGF1dG8geSA6IGVbeF0pCgkJaWYgKHkgIT0gZmFbeF0pCgkJCWZpbmRfbHIoeSk7CglzZWMgbm93OwoJaWYgKHggPT0gMSkKCQlub3cgPSAoc2VjKXstMjAwMDAwMDAwMCwgMjAwMDAwMDAwMH07CgllbHNlCgkJbm93ID0gKHNlYyl7YVt4XS5rLCBhW3hdLmt9OwoJZm9yIChhdXRvIHkgOiBlW3hdKQoJCWlmICh5ICE9IGZhW3hdKQoJCQlub3cgPSBtZXJnZShub3csIGFbeV0uc2MpOwoJYVt4XS5zYyA9IG5vdzsKfQpib29sIGNoZWNrKHNlYyBhLCBzZWMgYikKewoJaWYgKGIubCA8PSBhLmwgJiYgYS5yIDw9IGIucikKCQlyZXR1cm4gMDsKCWlmIChhLnIgPCBiLmwpCgkJcmV0dXJuIDA7CglpZiAoYS5sID4gYi5yKQoJCXJldHVybiAwOwoJcmV0dXJuIDE7Cn0KaW50IG91dHB1dCA9IDA7CnNlYyBXZW47CnZvaWQgcnVuKGludCB4KQp7CglvdXRwdXQrKzsKCWlmICh4ID09IDApCgkJcmV0dXJuIDsKCWlmIChjaGVjayhhW3hdLnNjLCBXZW4pID09IDApCgkJcmV0dXJuIDsKCXJ1bihhW3hdLmxzKTsKCXJ1bihhW3hdLnJzKTsKfQptYXAgPHBhaXI8aW50LCBpbnQ+LCBpbnQ+IG1lbTsKaW50IG1hcHBbMjAxMF07CmludCBtYWluKCkKewogICAgZnJlb3BlbigidHdvLmluIiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJ0d28ub3V0IiwgInciLCBzdGRvdXQpOwoJY2luID4+IG47Cglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCgl7CgkJYVtpXS5pZCA9IGk7CgkJY2luID4+IGFbaV0ubHMgPj4gYVtpXS5ycyA+PiBhW2ldLms7CgkJaWYgKGFbaV0ubHMgIT0gMCkKCQl7CgkJCWVbaV0ucHVzaF9iYWNrKGFbaV0ubHMpOwoJCQllW2FbaV0ubHNdLnB1c2hfYmFjayhpKTsKCQkJZmFbYVtpXS5sc10gPSBpOwoJCX0KCQlpZiAoYVtpXS5ycyAhPSAwKQoJCXsKCQkJZVtpXS5wdXNoX2JhY2soYVtpXS5ycyk7CgkJCWVbYVtpXS5yc10ucHVzaF9iYWNrKGkpOwoJCQlmYVthW2ldLnJzXSA9IGk7CgkJfQoJCW1hcHBbaV0gPSBhW2ldLms7Cgl9Cglzb3J0IChtYXBwICsgMSwgbWFwcCArIG4gKyAxKTsKCWFbMF0uc2MgPSAoc2VjKXstMjAwMDAwMDAwMCwgLTIwMDAwMDAwMDB9OwoJZmluZF9scigxKTsKCWludCBxOwoJY2luID4+IHE7CglpZiAobiA8PSAyMDAwICYmIHEgPD0gMjAwMCkKCXsKCQl3aGlsZSAocS0tKQoJCXsKCQkJaW50IEwsIFI7CgkJCWNpbiA+PiBMID4+IFI7CgkJCVdlbiA9IChzZWMpe0wsIFJ9OwoJCQlvdXRwdXQgPSAwOwoJCQlydW4oMSk7CgkJCWNvdXQgPDwgb3V0cHV0IDw8IGVuZGw7CgkJfQoJCXJldHVybiAwOwoJfQoJd2hpbGUgKHEtLSkKCXsKCQlpbnQgTCwgUjsKCQljaW4gPj4gTCA+PiBSOwoJCVdlbiA9IChzZWMpe0wsIFJ9OwoJCXBhaXIgPGludCwgaW50PiBtZW1jaGs7CgkJbWVtY2hrLmZpcnN0ID0gbG93ZXJfYm91bmQobWFwcCArIDEsIG1hcHAgKyBuICsgMSwgTCkgLSBtYXBwOwoJCW1lbWNoay5zZWNvbmQgPSB1cHBlcl9ib3VuZChtYXBwICsgMSwgbWFwcCArIG4gKyAxLCBSKSAtIG1hcHAgLSAxOwoJCWlmIChtZW0uZmluZChtZW1jaGspICE9IG1lbS5lbmQoKSkKCQl7CgkJCWNvdXQgPDwgbWVtW21lbWNoa10gPDwgZW5kbDsKCQl9CgkJZWxzZQoJCXsKCQkJb3V0cHV0ID0gMDsKCQkJcnVuKDEpOwoJCQljb3V0IDw8IG91dHB1dCA8PCBlbmRsOwoJCQltZW1bbWVtY2hrXSA9IG91dHB1dDsKCQl9CgkJLy8gY291dCA8PCBtZW1jaGsuZmlyc3QgPDwgIiAiIDw8IG1lbWNoay5zZWNvbmQgPDwgZW5kbDsKCX0KCXJldHVybiAwOwp9