#include<bits/stdc++.h>
using namespace std;
const int N=1e7+1000;
int n,k,p,tot,b[N],M,head,tail;
struct node{
int id,next,pre;
}a[N];
void init(){
tot=1;
head=0,tail=N;
a[head].next=1;
a[1].pre=head;
a[1].next=tail;
a[tail].pre=1;
b[1]=1;
}
void insert1(int k,int x){
a[a[k].next].pre=x;
a[x].next=a[k].next;
a[x].pre=k;
a[k].next=x;
b[x]=1;
}
void insert2(int k,int x){
a[a[k].pre].next=x;
a[x].pre=a[k].pre;
a[k].pre=x;
a[x].next=k;
b[x]=1;
}
void del(int x){
a[a[x].pre].next=a[x].next;
a[a[x].next].pre=a[x].pre;
b[x]=0;
}
int main(){
init();
cin>>n;
for(int i=2;i<=n;i++){
cin>>k>>p;
if(p)insert1(k,i);
else insert2(k,i);
}
cin>>M;
for(int i=1;i<=M;i++){
int t;
cin>>t;
if(!b[t])continue;
del(t);
}
int t=a[head].next;
while(t){
if(t!=N)cout<<t<<" ";
t=a[t].next;
}
}