#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int head,e[N],l[N],r[N],idx;
int n,m;
int tt[N];
void init()
{
r[0]=1;
l[1]=0;
idx=2;
}
void add(int x,int y)
{
int k;
for(int i=2;i<idx;i++)
{
if(e[i]==y)
{
k=i;
break;
}
}
e[idx]=x;
r[idx]=r[k];
l[idx]=k;
l[r[k]]=idx;
r[k]=idx;
idx++;
}
void add1(int x,int y)
{
int k;
for(int i=2;i<idx;i++)
{
if(e[i]==y)
{
k=i;
break;
}
}
e[idx]=x;
r[idx]=k;
l[idx]=l[k];
r[l[k]]=idx;
l[k]=idx;
idx++;
}
int main()
{
init();
e[idx]=1,l[idx]=0,r[idx]=r[0],l[r[0]]=idx,r[0]=idx++;
cin>>n;
int a,b;
for(int i=2;i<=n;i++)
{
cin>>a>>b;
if(b==1)
{
add(i,a);
}
else if(b==0)
{
add1(i,a);
}
}
cin>>m;
for(int i=0;i<m;i++)
{
cin>>tt[i];
}
sort(tt,tt+m);
int kk=unique(tt,tt+m)-tt;
for(int i=0;i<kk;i++)
{
int k=0;
for(int j=2;j<idx;j++)
{
if(e[j]==tt[i])
{
k=j;
l[r[k]]=l[k];
r[l[k]]=r[k];
break;
}
}
}
for(int i=r[0];i!=1;i=r[i])
cout<<e[i]<<" ";
cout<<endl;
return 0;
}