from sys import stdin import bisect from collections import deque N = int(stdin.readline()) L = [0] + [float("inf")] * (N-1) lis = [ [] for i in range(N) ] for i in range(N-1): l,a = map(int,stdin.readline().split()) a -= 1 lis[a].append( (i+1,l) ) q = deque([0]) while q: v = q.popleft() for nex,cost in lis[v]: L[nex] = max(L[v] , cost) q.append(nex) L2 = [i for i in L] L2.sort() Q = int(stdin.readline()) ANS = [] for loop in range(Q): ty,x = map(int,stdin.readline().split()) if ty == 1: idx = bisect.bisect_right(L2,x) ANS.append(idx) else: if L[x-1] == float("inf"): ANS.append(-1) else: ANS.append(L[x-1]) print (*ANS,sep="\n")