#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 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;
}
}
a[0].sc = (sec){-2000000000, -2000000000};
find_lr(1);
int q;
cin >> q;
for (int i = 1; i <= n; i++)
if (n <= 2000 && q <= 2000)
{
while (q--)
{
int L, R;
cin >> L >> R;
sec Wen = (sec){L, R};
int ans = 0;
for (int i = 1; i <= n; i++)
{
if (check(a[i].sc, Wen))
{
ans++;
if (check(a[a[i].ls].sc, Wen) == 0)
ans++;
if (check(a[a[i].rs].sc, Wen) == 0)
ans++;
}
}
cout << ans << endl;
}
return 0;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBuLCBxOwpzdHJ1Y3Qgc2VjCnsKCWludCBsLCByOwp9OwpzZWMgbWVyZ2Uoc2VjIGEsIHNlYyBiKQp7CglzZWMgYzsKCWMubCA9IG1pbihhLmwsIGIubCk7CgljLnIgPSBtYXgoYS5yLCBiLnIpOwoJcmV0dXJuIGM7Cn0Kc3RydWN0IG5vZGUKewoJaW50IGlkLCBrLCBscywgcnM7CglzZWMgc2M7Cn07Cm5vZGUgYVsyMDAwMTBdOwp2ZWN0b3IgPGludD4gZVsyMDAwMTBdOwppbnQgZmFbMjAwMDEwXTsKdm9pZCBmaW5kX2xyKGludCB4KQp7Cglmb3IgKGF1dG8geSA6IGVbeF0pCgkJaWYgKHkgIT0gZmFbeF0pCgkJCWZpbmRfbHIoeSk7CglzZWMgbm93OwoJaWYgKHggPT0gMSkKCQlub3cgPSAoc2VjKXstMjAwMDAwMDAwMCwgMjAwMDAwMDAwMH07CgllbHNlCgkJbm93ID0gKHNlYyl7YVt4XS5rLCBhW3hdLmt9OwoJZm9yIChhdXRvIHkgOiBlW3hdKQoJCWlmICh5ICE9IGZhW3hdKQoJCQlub3cgPSBtZXJnZShub3csIGFbeV0uc2MpOwoJYVt4XS5zYyA9IG5vdzsKfQpib29sIGNoZWNrKHNlYyBhLCBzZWMgYikKewoJaWYgKGIubCA8PSBhLmwgJiYgYS5yIDw9IGIucikKCQlyZXR1cm4gMDsKCWlmIChhLnIgPCBiLmwpCgkJcmV0dXJuIDA7CglpZiAoYS5sID4gYi5yKQoJCXJldHVybiAwOwoJcmV0dXJuIDE7Cn0KaW50IG1haW4oKQp7CiAgICBmcmVvcGVuKCJ0d28uaW4iLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oInR3by5vdXQiLCAidyIsIHN0ZG91dCk7CgljaW4gPj4gbjsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKCXsKCQlhW2ldLmlkID0gaTsKCQljaW4gPj4gYVtpXS5scyA+PiBhW2ldLnJzID4+IGFbaV0uazsKCQlpZiAoYVtpXS5scyAhPSAwKQoJCXsKCQkJZVtpXS5wdXNoX2JhY2soYVtpXS5scyk7CgkJCWVbYVtpXS5sc10ucHVzaF9iYWNrKGkpOwoJCQlmYVthW2ldLmxzXSA9IGk7CgkJfQoJCWlmIChhW2ldLnJzICE9IDApCgkJewoJCQllW2ldLnB1c2hfYmFjayhhW2ldLnJzKTsKCQkJZVthW2ldLnJzXS5wdXNoX2JhY2soaSk7CgkJCWZhW2FbaV0ucnNdID0gaTsKCQl9Cgl9CglhWzBdLnNjID0gKHNlYyl7LTIwMDAwMDAwMDAsIC0yMDAwMDAwMDAwfTsKCWZpbmRfbHIoMSk7CglpbnQgcTsKCWNpbiA+PiBxOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQoJaWYgKG4gPD0gMjAwMCAmJiBxIDw9IDIwMDApCgl7CgkJd2hpbGUgKHEtLSkKCQl7CgkJCWludCBMLCBSOwoJCQljaW4gPj4gTCA+PiBSOwoJCQlzZWMgV2VuID0gKHNlYyl7TCwgUn07CgkJCWludCBhbnMgPSAwOwoJCQlmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCgkJCXsKCQkJCWlmIChjaGVjayhhW2ldLnNjLCBXZW4pKQoJCQkJewoJCQkJCWFucysrOwoJCQkJCWlmIChjaGVjayhhW2FbaV0ubHNdLnNjLCBXZW4pID09IDApCgkJCQkJCWFucysrOwoJCQkJCWlmIChjaGVjayhhW2FbaV0ucnNdLnNjLCBXZW4pID09IDApCgkJCQkJCWFucysrOwoJCQkJfQoJCQl9CgkJCWNvdXQgPDwgYW5zIDw8IGVuZGw7CgkJfQoJCXJldHVybiAwOwoJfQoJcmV0dXJuIDA7Cn0=