#include<bits/stdc++.h>
using namespace std;
struct node{
int last=0,next=0;
}l[int(1e5)+10];
int head=1,tail=1;
void insert(int x,int y,bool p){
if(p==0){
int u=l[x].last,v=x;
l[y].last=u;
l[y].next=v;
l[u].next=y;
l[v].last=y;
if(x==head){
head=y;
}
}
else{
int u=x,v=l[x].next;
l[y].next=v;
l[y].last=u;
l[u].next=y;
l[v].last=y;
if(x==tail){
tail=y;
}
}
}
void erase(int x){
int u=l[x].last,v=l[x].next;
if(x==head){
if(l[x].next)
head=l[x].next;
}
if(x==tail){
if(l[x].last)
tail=l[x].last;
}
l[u].next=v;
l[v].last=u;
}
void print(){
for(int i=head;i!=0;i=l[i].next){
cout<<i<<" ";
}
}
int n,m;
int main() {
cin>>n;
for(int i=2;i<=n;i++){
int k;
bool p;
cin>>k>>p;
insert(k,i,p);
}
cin>>m;
for(int i=1;i<=m;i++){
int k;
cin>>k;
erase(k);
}
l[tail].next=0;
l[head].last=0;
print();
return 0;
}