#include<bits/stdc++.h>
using namespace std;
struct node{
int pre,nxt,key;
node(int _key=0,int _pre=0,int _nxt=0){
pre=_pre;
nxt=_nxt;
key=_key;
}
};
node s[100005];
int n,m,tot=0,index[100005]={0};
void ins_back(int x,int y){
int now=index[x];
s[++tot]=node(y,now,s[now].nxt);
s[s[now].nxt].pre=tot;
s[now].nxt=tot;
index[y]=tot;
}
void ins_front(int x,int y){
int now=index[x];
s[++tot]=node(y,s[now].pre,now);
s[s[now].pre].nxt=tot;
s[now].pre=tot;
index[y]=tot;
}
void del(int x){
int now=index[x];
int le=s[now].pre,rt=s[now].nxt;
s[le].nxt=rt;
s[rt].pre=le;
index[x]=0;
}
int main(){
int x1,k,p,now;
cin>>n;
s[0]=node();
ins_back(0,1);
for(int i=2;i<=n;i++){
cin>>k>>p;
p!=0?ins_back(k,i):ins_front(k,i);
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>x1;
if(index[x1]!=0){
del(x1);
}
}
now=s[0].nxt;
while(now!=0){
cout<<s[now].key<<' ';
now=s[now].nxt;
}
return 0;
}