from collections import defaultdict N = int(input()) moji = [] for _ in range(N): a,b = list(map(int,input().split())) moji.append((a,b)) ans = [] stack = [] onetwo = [] must = defaultdict(list) for i in range(N): a,b = moji[i] if(a == 1 and b == 0): stack.append(i) elif(a == 1 and b == 1): stack.append(onetwo.pop()) stack.append(i) elif(a == 0 and b == 2): onetwo.append(i) if(stack): must[i] += stack.copy() stack = [] elif(a == 0 and b == 1): ans.append(i) v = onetwo.pop() ans.append(v) while(must[v]):ans.append(must[v].pop()) elif(a == 0 and b == 0): ans.append(i) while(stack): v = stack.pop() ans.append(v) for i in must[v]: ans.append(i) else: 1/0 for i in ans: print(i+1)