from collections import deque import bisect n = int(input()) la = [(0, 0)] g = [[] for _ in range(n)] for i in range(1, n): l,a = map(int, input().split()) a-=1 la.append((l,a)) g[a].append(i) M = 10**18 ans = [M for _ in range(n)] d = deque([(0, 0)]) while(d): now, l = d.pop() l = max(la[now][0], l) ans[now] = l for v in g[now]: d.append((v,l)) ans2 = [i for i in ans] ans2.sort() q = int(input()) for _ in range(q): a,x = map(int, input().split()) if(a==1): print(bisect.bisect(ans2,x)) else: x-=1 if(ans[x]==M): print(-1) else: print(ans[x])