#include<bits/stdc++.h>
using namespace std;
int n,m,k,p,first=1;
struct node{
int ne,pre;
}a[100010];
void in(int x,int k,int p){
if(p){
int u=a[k].ne;
a[k].ne=x;
a[x].pre=k;
a[x].ne=u;
a[u].pre=x;
}else{
int u=a[k].pre;
a[k].pre=x;
a[x].ne=k;
a[x].pre=u;
a[u].ne=x;
if(k==first) first=x;
}
}
void er(int x){
a[a[x].pre].ne=a[x].ne;
a[a[x].ne].pre=a[x].pre;
if(x==first) first=a[x].ne;
}
void print(int x){
if(!x) return;
cout<<x<<' ';
print(a[x].ne);
}
int main(){
cin>>n;
for(int i=2;i<=n;i++){
cin>>k>>p;
in(i,k,p);
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>k;
er(k);
}
print(first);
return 0;
}
first表示第 1 个元素