#include<bits/stdc++.h>
using namespace std;
int n,tot;
struct node{
int key,pre,nxt;
node(int _key=0,int _pre=0,int _nxt=0){
key=_key,pre=_pre,nxt=_nxt;
}
};
node s[100000];
int index[100005]; //index[i]=j表示i的编号
void ins_back(int x,int y){ //把y插入到x的后面(x,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){ //把y插入x的前面(y,x)
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){//删除x
int now=index[x];
s[s[now].pre].nxt=s[now].nxt;
s[s[now].nxt].pre=s[now].pre;
index[x]=0;
}
int main(){
int m,k,p,now,x;
cin>>n;
s[0]=node();
ins_back(0,1);
for(int i=2;i<=n;i++){
cin>>k>>p;
p?ins_back(k,i):ins_front(k,i);
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>x;
if(index[x])del(x);
}
now=s[0].nxt;
while(now){
cout<<s[now].key<<" ";
now=s[now].nxt;
}
return 0;
}