#include<bits/stdc++.h>
using namespace std;
inline int read()
{
register char ch;
register int f,x;
ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
if(f<0)
{
return -x;
}
return x;
}
struct node
{
int k,p;
};
node cz[100010];
int n,m,l[100010],r[100010],u[100010],head=1,tail=1;
signed main()
{
n=read();
for(int i=2;i<=n;i++)
{
cz[i].k=read();
cz[i].p=read();
int ki=cz[i].k,pi=cz[i].p;
if(!pi)
{
r[l[ki]]=i;
l[i]=l[ki];
r[i]=ki;
l[ki]=i;
if(l[i]==0)head=i;
}
else
{
l[r[ki]]=i;
r[i]=r[ki];
l[i]=ki;
r[ki]=i;
if(r[i]==0)tail=i;
}
}
m=read();
for(int i=1;i<=m;i++)
{
int x=read();
if(u[x])continue;
if(x==head)
{
head=r[x];
l[head]=0;
continue;
}
if(x==tail)
{
tail=l[x];
r[tail]=0;
continue;
}
r[l[x]]=r[x];
l[r[x]]=l[x];
u[x]=1;
}
int ans=head;
while(true)
{
if(ans==0)break;
printf("%d ",ans);
ans=r[ans];
}
return 0;
}