from bisect import bisect_right n=int(input()) lp=[list(map(int,input().split())) for _ in range(n-1)] cil=[[]for _ in range(n)] for i in range(1,n): l,p=lp[i-1] cil[p-1].append((i,l)) level=[10**10]*n level[0]=0 for i in range(n): for node,l in cil[i]: level[node]=max(level[i],l) level_s=sorted(level) for _ in range(int(input())): q,xy=map(int, input().split()) if q==1: print(bisect_right(level_s,xy)) else: if level[xy-1]==10**10:print(-1) else:print(level[xy-1])