#include<stdio.h>
#include<math.h>
#include<string.h>
#include<stdlib.h>
#include <ctype.h>
typedef struct node{
int data;
struct node* pre;
struct node* next;
}lnode,*linklist;
int main()
{
int n,i=1,a,op,m;
scanf("%d",&n);
linklist head,p,r,list;
list=(linklist)malloc(sizeof(lnode));
list->next=list;
list->pre=list;
p=(linklist)malloc(sizeof(lnode));
p->data=1;
list->next=p;
list->pre=p;
p->next=list;
p->pre=list;
while(i<n)
{
i++;
scanf("%d%d",&a,&op);
r=list->next;
while(r!=list&&r->data!=a)
{
r=r->next;
}
if(op==1)
{
p=(linklist)malloc(sizeof(lnode));
p->data=i;
p->pre=r;
p->next=r->next;
r->next->pre=p;
r->next=p;
}
else
{
p=(linklist)malloc(sizeof(lnode));
p->data=i;
p->next=r;
p->pre=r->pre;
r->pre->next=p;
r->pre=p;
}
}
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d",&a);
r=list->next;
while(r!=list&&r->data!=a)
{
r=r->next;
}
if(r!=list)
{
r->pre->next=r->next;
r->next->pre=r->pre;
free(r);
}
}
p=list->next;
while(p!=list)
{
printf("%d ",p->data);
p=p->next;
}
return 0;
}