#include<bits/stdc++.h>
using namespace std;
int n,tot=0,m;
struct node{
int l,r;
int v;
node(int ll=0,int rr=0,int vv=0){
l=ll,r=rr,v=vv;
}
};
node a[100000];
int d[1000000]; //d[i]=j 表是i号同学的编号为j
void cr(int x,int y){
tot++;
a[tot].v=y;
int dx=d[x];
int dy=tot;
int dz=a[dx].r;
a[dx].r=dy;
a[dy].r=dz;
a[dy].l=dx;
a[dz].l=dy;
d[y]=tot;
}
void cl(int y,int x){
tot++;
a[tot].v=y;
int dx=d[x];
int dy=tot;
int dz=a[dx].l;
a[dz].r=dy;
a[dy].r=dx;
a[dx].l=dy;
a[dy].l=dz;
d[y]=tot;
}
void sc(int x){
int dx=d[x];
int dy=a[dx].l;
int dz=a[dx].r;
a[dy].r=dz;
a[dz].l=dy;
a[x]=0;
}
int main(){
cin>>n;
a[tot].r=1;
a[tot].v=0;
d[0]=0;
tot++;
a[tot].r=2;
a[tot].l=0;
a[tot].v=1;
d[1]=1;
for(int i=2;i<=n;i++){
int k,p;
cin>>k>>p;
if(p){ // k i
cr(k,i);
}
else{
cl(i,k);
}
}
cin>>m;
for(int i=1;i<=m;i++){
int x;
cin>>x;
if(d[x]) sc(x);
}
int x=a[0].r;
while(x!=0){
cout<<a[x].v<<" ";
x=a[x].r;
}
return 0;
}