#include<bits/stdc++.h>
using namespace std;
struct kk{
int z,y,v;
};
int main(){
int n,m,fx,x,Z,Y,d[111111]={};
vector<kk> list;
list.push_back({0,0,0});
list.push_back({0,0,1});
d[1]=1;
cin>>n;
for(int i=2;i<=n;i++){
cin>>x>>fx;
d[i]=list.size();
Z=Y=0;
if(fx==0){
Z=list[list[d[x]].z].v;
list[d[list[list[d[x]].z].v]].y=i;
list[d[x]].z=i;
Y=x;
}
else{
Y=list[list[d[x]].y].v;
list[d[list[list[d[x]].y].v]].z=i;
list[d[x]].y=i;
Z=x;
}
list.push_back({Z,Y,i});
}
cin>>m;
for(int i=0;i<m;i++){
cin>>x;
list[list[d[x]].z].y=list[d[x]].y;
list[list[d[x]].y].z=list[d[x]].z;
}
int a=1;
while(1){
if(list[a].z==0){
break;
}
else{
a=list[a].z;
}
}
while(1){
cout<<list[a].v<<" ";
if(list[a].y==0){
break;
}
else{
a=list[a].y;
}
}
}