#include<stdio.h>
#include<string.h>
typedef struct node
{
int L;
int R;
int root;
};
int main()
{
struct node a[100003];
int n,i,j;
scanf("%d",&n);
for(i=1;i<n+1;i++)
{
a[i].root=i;
a[i].L=0;
a[i].R=0;
}
for(i=0;i<n-1;i++)
{
int x,y;
scanf("%d %d",&x,&y);
if(y==0)
{
a[i+2].L=a[x].L;
a[a[x].L].R=i+2;
a[x].L=i+2;
a[i+2].R=x;
}
if(y==1)
{
a[i+2].R=a[x].R;
a[a[x].R].L=i+2;
a[x].R=i+2;
a[i+2].L=x;
}
}
int m;
scanf("%d",&m);
for(i=0;i<m;i++)
{
int flag2=0;
scanf("%d",&flag2);
a[a[flag2].L].R=a[flag2].R;
a[a[flag2].R].L=a[flag2].L;
}
int flag=0;
for(i=1;i<n+1;i++)
{
if(a[i].L==0)
{
flag=i;
}
}
for(i=1;i<n+1;i++)
{
if(a[flag].root!=0)
{
printf("%d ",a[flag].root);
flag=a[flag].R;
}
}
}