#include<bits/stdc++.h>
using namespace std;
int head, tail;
struct Node {
int val, left, right;
}a[100001];
void link(int x, int y){
a[x].right = y;
a[y].left = x;
} //将x节点插到y节点前;
int n,m;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
a[i]=(Node){i,i-1,i+1};
}
head=1;
a[1].left=a[n].right=0;
for(int i=2;i<=n;i++){
int k,p;
cin>>k>>p;
if(p==1){
link(a[i].left,a[i].right);
link(i,a[k].right);
link(k,i);
}
else{
if(k==head){
head=i;
}
link(a[i].left,a[i].right);
link(a[k].left,i);
link(i,k);
}
}
cin>>m;
while(m--){
int t;
cin>>t;
link(a[t].left,a[t].right);
}
for(int tmp=head;;tmp=a[tmp].right){
if(a[tmp].val==0) break;
cout<<a[tmp].val<<" ";
}
return 0;
}