N = int(input()) P = [-1]*N Gout = [set() for i in range(N)] LEVEL = [10**18]*N Llist = [-1]*N Llist[0] = 0 LEVEL[0] = 0 for i in range(1,N): L,A = map(int,input().split()) P[i] = A-1 Gout[A-1].add(i) Llist[i] = L stack = [0] while stack: i = stack.pop() for j in Gout[i]: LEVEL[j] = max(Llist[j],LEVEL[i]) stack.append(j) needlevel = LEVEL[:] needlevel.sort() import bisect Q = int(input()) for i in range(Q): x,y = map(int,input().split()) if x == 1: print(bisect.bisect_right(needlevel,y)) else: if LEVEL[y-1] == 10**18: print(-1) else: print(LEVEL[y-1])