#include<bits/stdc++.h>
using namespace std;
int n,m;
int con,now;
struct l{
int l,r;
}a[100100];
void addR(int x,int pos){
a[x].l=pos;
a[x].r=a[pos].r;
a[pos].r=x;
a[a[pos].r].l=x;
}
void addL(int x,int pos){
a[x].r=pos;
a[x].l=a[pos].l;
a[pos].l=x;
a[a[pos].l].r=x;
}
void del(int x){
if(a[x].l==-1) return;
a[a[x].l].r=a[x].r;
a[a[x].r].l=a[x].l;
a[x].l=-1;
a[x].r=-1;
}
void outpt(){
int fl=a[0].r;
while(1){
cout<<fl<<" ";
if(a[fl].r==-1) break;
fl=a[fl].r;
}
}
void ini(){
for(int i=1;i<=n;i++){
a[i].l=a[i].r=-1;
}
a[1].l=0;
a[0].r=1;
}
int main(){
cin>>n;
ini();
for(int i=2;i<=n;++i){
cin>>now>>con;
if(!con) addL(i,now);
else addR(i,now);
}
cin>>m;
int fl;
for(int i=1;i<=m;++i){
cin>>fl;
del(fl);
}
outpt();
return 0;
}