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 sta=[0] for node in sta: for mode,l in cil[node]: level[mode]=max(level[node],l) sta.append(mode) 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])