def solve(N, PS, Q, QS):
# PAST1K
# to 0-origin
PS = [p - 1 for p in PS]
from collections import defaultdict
children = defaultdict(list)
for i, p in enumerate(PS):
children[p].append(i)
# calc depth
depth = [0] * N
def visit(v):
d = depth[v] + 1
for c in children[v]:
depth[c] = d
visit(c)
root = children[-2][0]
visit(root)
# doubling
parents = [PS]
for _i in range(20):
prev = parents[-1]
next = [0] * N
for i in range(N):
next[i] = prev[prev[i]]
parents.append(next)
for a, b in QS:
a -= 1
b -= 1
d = depth[a] - depth[b]
if d < 0:
print("No")
continue
# find d-th parent of a
p = a
for i in range(20):
if d % 2:
p = parents[i][p]
d //= 2
if p == b:
print("Yes")
else:
print("No")