#include<stdlib.h>
typedef struct Node
{
int num;
struct Node *rlink;
struct Node *llink;
}Node,*Link;
Node node[100005];
int main()
{
int N;
Link p,q,head=&node[1];
scanf("%d",&N);
int a,b;
node[1].num=1;
for(int i=2;i<=N;i++)
{
scanf("%d%d",&a,&b);
node[i].num=i;
if(b==1)
{
p=node[a].rlink;
if(p!=NULL)
{
node[i].rlink=node[a].rlink;
p->llink=&node[i];
node[a].rlink=&node[i];
node[i].llink=&node[a];
}
else
{
node[a].rlink=&node[i];
node[i].llink=&node[a];
}
}
else if(b==0)
{
p=node[a].llink;
if(p!=NULL)
{
node[i].llink=node[a].llink;
p->rlink=&node[i];
node[a].llink=&node[i];
node[i].rlink=&node[a];
}
else
{
head=&node[i];
node[a].llink=&node[i];
node[i].rlink=&node[a];
}
}
}
int m,j;
scanf("%d",&m);
for(int i=0;i<m;i++)
{
scanf("%d",&j);
p=node[j].llink;
q=node[j].rlink;
if(p==NULL && q!=NULL)
{
head=q;
q=NULL;
}
if(p!=NULL && q==NULL)
{
p->rlink=q;
p=NULL;
}
if(p!=NULL && q!=NULL)
{
q->llink=p;
p->rlink=q;
p=NULL;
q=NULL;
}
}
for(p=head;p!=NULL;p=p->rlink)
{
printf("%d ",p->num);
}
}