INF = 1e18 from bisect import bisect_left, bisect_right from collections import deque def cnt_ika(li, x): # x 以下の要素数 return bisect_right(li, x) N = int(input()) G = [list() for _ in range(N + 1)] required_level = [INF] * (N + 1) required_level[1] = 0 for i in range(2, N + 1): l, a = map(int, input().split()) required_level[i] = l G[a].append(i) # 頂点1からBFS que = deque() que.append(1) visited = [False]*(N + 1) visited[1] = True while que: pos = que.popleft() for nex in G[pos]: visited[nex] = True required_level[nex] = max(required_level[nex], required_level[pos]) que.append(nex) waza_available = [] # 実際に覚えられる技だけ入れる for i in range(1, N + 1): if visited[i]: waza_available.append(required_level[i]) waza_available.sort() Q = int(input()) ansl = [] for i in range(Q): p, q = map(int, input().split()) if p == 1: #required_level から x 以下の個数 ans = cnt_ika(waza_available, q) else: if visited[q]: ans = required_level[q] else: ans = -1 ansl.append(ans) print(*ansl, sep='\n')