#include<bits/stdc++.h>
const int maxn = 100100;
using std::cin;
using std::cout;
int n, q;
int bz[20][maxn];
int sum[maxn], dep[maxn];
inline int rt(int x) { for(int i = 19;i >= 0;--i) if(bz[i][x]) x = bz[i][x]; return x; }
inline int lca(int x, int y) {
if(dep[x] > dep[y]) std::swap(x, y);
for(int d = dep[y] - dep[x];d;d &= d - 1) y = bz[__builtin_ctz(d)][y];
for(int i = 19;i >= 0;--i) if(bz[i][x] != bz[i][y]) x = bz[i][x], y = bz[i][y];
return x == y ? x : bz[0][x];
}
int main() {
std::ios::sync_with_stdio(false), std::cin.tie(0);
cin >> n;
for(int i = 1, fa;i <= n;++i) {
cin >> fa >> sum[i];
if(fa != -1) {
sum[i] += sum[fa];
dep[i] = dep[fa] + 1;
bz[0][i] = fa;
}
}
for(int i = 1;i < 20;++i) {
for(int j = 1;j <= n;++j) {
bz[i][j] = bz[i - 1][bz[i - 1][j]];
}
}
cin >> q;
for(int i = 0;i < q;++i) {
int opt, x, y;
cin >> opt >> x >> y;
if(rt(x) != rt(y)) {
cout << "NO" << '\n';
continue;
}
int lc = lca(x, y);
bool yes = sum[x] == sum[lc] && y != lc;
if(opt == 1) yes &= sum[y] == sum[lc] && x == lc;
else yes &= sum[y] - sum[lc] == dep[y] - dep[lc];
cout << (yes ? "YES" : "NO") << '\n';
}
}