#include <stdio.h>
struct Node
{
int left,right;
int alive;
}a[100010];
int main()
{
int n,k,p,m,x,g=0;
int i=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
a[i].left=-1;
a[i].right=-1;
a[i].alive=1;
}
for(i=2;i<=n;i++)
{
scanf("%d %d",&k,&p);
if(p==0)
{
if(a[k].left==-1)
{
a[k].left=i;
a[i].right=k;
}
else
{
a[a[k].left].right=i;
a[i].left=a[k].left;
a[k].left=i;
a[i].right=k;
}
}
else
{
if(a[k].right==-1)
{
a[k].right=i;
a[i].left=k;
}
else
{
a[a[k].right].left=i;
a[i].right=a[k].right;
a[k].right=i;
a[i].left=k;
}
}
}
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d",&x);
if(a[x].alive==1)
{
a[a[x].left].right=a[x].right;
a[a[x].right].left=a[x].left;
a[x].alive=0;
}
}
for(i=1;i<=n;i++)
{
if(a[i].left==-1)
{
break;
}
}
while(a[i].right!=-1)
{
printf("%d ",i);
i=a[i].right;
}
printf("%d",i);
return 0;
}