#include<iostream>
using namespace std;
int n,x;
struct ls{
int l,r;
}lb[100010];
void in(int i,int p,int k){
int pos=0;
while(lb[pos].r!=i){
pos=lb[pos].r;
}
if(p==0){
int po=pos;
pos=lb[pos].r;
lb[po].r=k;
lb[k].l=po;
lb[pos].l=k;
lb[k].r=pos;
}
else{
pos=lb[pos].r;
int po=lb[pos].r;
lb[pos].r=k;
lb[k].l=pos;
lb[po].l=k;
lb[k].r=po;
}
}
void de(int x){
int pos=0;
while(lb[pos].r!=x){
pos=lb[pos].r;
if(lb[pos].r==100009)return;
}
pos=lb[pos].r;
lb[lb[pos].l].r=lb[pos].r;
lb[lb[pos].r].l=lb[pos].l;
}
int main(){
cin>>n;
int k,p,m;
lb[0].r=1;
lb[1].l=0;
lb[1].r=100009;
for(int i=1;i<n;i++){
cin>>k>>p;
in(k,p,i+1);
}
cin>>m;
for(int i=0;i<m;i++){
cin>>x;
de(x);
}
for(int i=0;lb[i].r!=100009;i=lb[i].r){
cout<<lb[i].r<<' ';
}
return 0;
}