#include<bits/stdc++.h>
using namespace std;
long long n,m,nn,b[100005],k,q,head=1;
struct node
{
long long val,next=0;
}a[100005];
void inode(long long x,long long f,long long y)
{
if(f==0)
{
a[b[x-1]].next = ++nn;
a[nn].val = y;
a[nn].next = b[x];
b[y] = nn;
if(b[x]==head)
{
head = nn;
}
}
else
{
a[b[x]].next = ++nn;
a[nn].val = y;
a[nn].next = b[x+1];
b[y] = nn;
}
}
void dnode(long long f)
{
a[b[f-1]].next = b[f+1];
if(b[f]==head)
{
head = b[f+1];
}
b[f] = 0;
}
int main()
{
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n;
a[++nn].val = 1;
b[1] = nn;
for(int i=2;i<=n;i++)
{
cin>>k>>q;
inode(k,q,i);
}
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>k;
if(b[k])
{
dnode(k);
}
}
a[0].val = 0;
while(a[head].val!=0)
{
cout<<a[head].val<<" ";
head = a[head].next;
}
return 0;
}
悬一关