#include <bits/stdc++.h>
using namespace std;
inline int read(){
int r=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9')
r=(r<<1)+(r<<3)+(c^48),c=getchar();
return r*f;
}
int n,m,x[100005][3],xx,k,mark[100005];
int main(){
cin>>n;
x[1][1]=1;
for(int i=2;i<=n;i++){
xx=read(),k=read();
if(!k){
x[i][2]=x[xx][2];
x[x[xx][2]][3]=i;
x[xx][2]=i;
x[i][3]=xx;
}
else {
x[i][2]=xx;
x[i][3]=x[xx][3];
x[x[xx][3]][2]=i;
x[xx][3]=i;
}
}
cin>>m;
while(m--){
xx=read();
if(mark[xx])continue;
int cnt=x[xx][2];
x[x[xx][2]][3]=x[xx][3];
x[x[xx][3]][2]=cnt;
// **x[xx][3]=0,x[xx][2]=0; **
mark[xx]=1;
}
int l=1;
while(x[l][2]>0)
l=x[l][2];
do{
printf("%d ",l);
l=x[l][3];
}while(x[l][3]>0);
cout<<l<<endl;
}
x[xx][3]=0,x[xx][2]=0; 这段为什么不删就会wa?