#include<iostream>
#include<algorithm>
using namespace std;
typedef struct LNode
{
int id;
struct Lnode* next;
}LNode,*LinkList;
int n, k, p, m, x;
static int cnt = 1;
LinkList LocateElem(int k, LinkList L)
{
while (L->next != NULL)
{
if (L->id == k)
break;
L = L->next;
}
return L;
}
void InsertNextNode(LinkList s)
{
s->next = new LNode;
s->next->data = cnt;
cnt++;
s->next->next = NULL;
}
void InsertPriorNode(LinkList s)
{
InsertNextNode(s);
int tmp = s->id;
s->id = s->next->id;
s->next->id = tmp;
}
LNode* ListInsert(LinkList L)
{
while (--n)
{
LNode* s;
cin >> k;
s = LocateElem(k,L);
cin >> p;
if (p == 0)
{
InsertPriorNode(s);
L = s;
}
else if (p == 1)
{
InsertNextNode(s);
}
}
return L;
}
int main()
{
cin >> n;
LinkList L = new LNode;
L->id = 1;
L->next = NULL;
L = ListInsert(L);
}