#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e6+5;
struct node
{
int id, nxt, prev;
}a[MAXN];
int n, m;
int head;
void out()
{
for(int i=head; i; i=a[i].nxt)
{
cout<<a[i].id<<" ";
}
cout<<"\n";
}
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
{
a[i].id=i;
}
head=1;
int prev=1, lst=1, nxt=1;
a[1].id=1;
for(int i=2; i<=n; i++)
{
int k, p;
cin>>k>>p;
if(p)
{
a[i].nxt=a[k].nxt, a[i].prev=k;
a[a[k].nxt].prev=i, a[k].nxt=i;
if(k==lst)
{
lst=i;
}
}
else
{
a[i].prev=a[k].prev, a[i].nxt=k;
a[a[k].prev].nxt=i, a[k].prev=i;
if(k==head)
{
head=i;
}
}
}
a[lst].nxt=0;
cin>>m;
for(int i=1; i<=m; i++)
{
int x;
cin>>x;
prev=a[x].prev;
nxt=a[x].nxt;
if(x==head)
{
head=a[x].nxt;
}
else
{
a[prev].nxt=nxt;
a[nxt].prev=prev;
}
}
for(int i=head; i; i=a[i].nxt)
{
cout<<a[i].id<<" ";
}
}