#include<iostream>
using namespace std;
const int N=100010;
struct qwq{
int front;
int behind;
};
qwq a[N]={};
int main(){
a[1].behind=0;
a[1].front=0;
int head=1;
int n;
cin>>n;
for(int i=2;i<=n;i++){
int k,p;
cin>>k>>p;
if(p==1){
a[i].behind=a[k].behind;
a[k].behind=i;
a[i].front=k;
a[a[i].behind].front=i;
}
if(p==0){
a[i].behind=k;
a[i].front=a[k].front;
a[a[k].front].behind=i;
a[k].front=i;
if(a[i].front==0) head=i;
}
}
int q;
cin>>q;
for(int i=1;i<=q;i++){
int shan;
cin>>shan;
if(a[shan].behind==0&&a[shan].front==0) continue;
int shanf=a[shan].front,shanb=a[shan].behind;
a[shanf].behind=shanb;
a[shanb].front=shanf;
}
while(head){
cout<<head<<" ";
head=a[head].behind;
}
return 0;
}