#include<bits/stdc++.h>
using namespace std;
queue<int>q;
struct linked{
int head;
int pre[100010];
int nxt[100010];
linked(){
head=0;
memset(pre,-1,sizeof(pre));
memset(nxt,-1,sizeof(nxt));
}
void push_head(int x){
head=x;
}void push_back(int k,int i){
pre[i]=k;
nxt[i]=nxt[k];
pre[nxt[k]]=i;
nxt[k]=i;
}void push_front(int k,int i){
if(k==head){
head=i;
}nxt[pre[k]]=i;
pre[i]=pre[k];
nxt[i]=k;
pre[k]=i;
}void pop(int x){
if(x==head){
head=nxt[x];
}if(pre[x]==-1&&nxt[x]==-1){
return;
}
pre[nxt[x]]=pre[x];
nxt[pre[x]]=nxt[x];
nxt[x]=-1;
pre[x]=-1;
}
};
int main(){
linked l;
int n,m,x;
cin>>n;
l.push_head(1);
for(int i=2;i<=n;i++){
int k,p;
cin>>k>>p;
if(p){
l.push_back(k,i);
}else{
l.push_front(k,i);
}
}cin>>m;
while(m--){
cin>>x;
l.pop(x);
}int cnt=l.head;
while(cnt!=-1){
cout<<cnt<<' ';
cnt=l.nxt[cnt];
}
return 0;
}