#include<bits/stdc++.h>
using namespace std;
struct node{
int val;
int *next;
};
int main(){
int n,m;
node *pointer[n+1];
cin>>n;
pointer[0]->val=1;
pointer[0]->next=NULL;
for(int i=2;i<=n;i++){
int k,p;
cin>>k>>p;
if(p==1){
pointer[i]->next=pointer[k-1]->next;
pointer[i]->val=i;
pointer[k-1]->next=pointer[i];
}
if(p==0){
pointer[k-1]->next=pointer[i];
pointer[i]->val=i;
}
}
cin>>m;
for(int i=0;i<m;i++){
int b;
cin>>b;
for(int j=0;j<n;j++){
if(pointer[j]->val==b){
pointer[j]->val=NULL;
}
}
}
for(int i=0;i<n;i++){
if(pointer[i]->val!=NULL){
cout<<pointer[i]->val<<" ";
}
}
return 0;
}