#include<bits/stdc++.h>
using namespace std;
struct man {
long long next=0,prev=0,data;
}a[100000+5];
long long head=0,len=0;
int main() {
a[head].next=1;
a[1].prev=head;
a[head].data=0;
a[1].data=1;
len=1;
long long n;
cin>>n;
for(long long i=2; i<=n; i++) {
long long k,p;
cin>>k>>p;
len++;
if(p==0){//左
a[i].data=i;
a[i].prev=a[k].prev;
a[a[k].prev].next=i;
a[i].next=k;
a[k].prev=i;
if(a[head].next==k){
head=i;
}
} else if(p==1){
a[i].data=i;
a[i].next=a[k].next;
a[a[k].next].prev=i;
a[i].prev=k;
a[k].next=i;
}
}
//删除:
long long m;
cin>>m;
for(long long i=1;i<=m;i++){
long long x;
cin>>x;
long long hand=head;
while(a[hand].data!=x&&hand<=len){
hand=a[hand].next;
}
if(a[hand].data==x){
a[a[hand].prev].next=a[hand].next;
a[a[hand].next].prev=a[hand].prev;
len--;
}
}
long long hand=a[head].next;
while(len--){
cout<<a[hand].data<<" ";
hand=a[hand].next;
}
return 0;
}