#include<cstdio>
using namespace std;
struct list{int last,x,next;}l[200000];
int n,m,k,f;
int main(){
scanf("%d",&n);
l[1].x=1;
l[1].next=0;
for(int i=2;i<=n;++i){
scanf("%d %d",&k,&f);
l[i].x=i;
if(f){
l[i].last=l[k].x;
l[i].next=l[k].next;
l[k].next=l[i].x;
l[l[i].next].last=l[i].x;
}else{
l[i].next=l[k].x;
l[i].last=l[l[i].next].last;
l[k].last=l[i].x;
l[l[i].last].next=l[i].x;
}
}
scanf("%d",&m);
for(int i=1;i<=m;++i){
scanf("%d",&k);
l[l[k].next].last=l[k].last;
l[l[k].last].next=l[k].next;
}
int j;
for(int i=1;i<=n;++i) if(l[i].last==0) j=i;
while(j){
printf("%d ",l[j].x);
j=l[j].next;
}
return 0;
}