#include<iostream>
using namespace std;
struct qw{
int l;
int r;
int nq;
}a[100001];
int n;
void ins(int num,bool q,int i)
{
if(q)
{
a[a[num].l].r=i;
a[i].l=a[a[num].l].nq;
a[num].l=i;
a[i].r=a[num].nq;
// a[i].num=i;
}
else
{
a[a[num].r].l=i;
a[i].r=a[a[num].r].nq;
a[num].r=i;
a[i].l=a[num].nq;
// a[i].num=i;
}
return ;
}
int ans=0;
void dele(int x){
if(a[a[x].l].r!=x) return;
a[a[x].l].r=a[a[x].r].l;
a[a[x].r].l=a[a[x].l].r;
ans++;
return ;
}
int cnt=0;
void out(int begin){
cout<<begin<<" ";
if(cnt!=n-ans)
cnt++,out(a[begin].r);
else return;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cin>>n;
for(int i=1;i<=n;i++)
{
int k;
bool p;
cin>>k>>p;
ins(k,p,i);
}
int m;
cin>>m;
for(int i=1;i<=m;i++)
{
int x;
cin>>x;
dele(x);
}
// cout<<ans<<endl;
out(1);
return 0;
}
J组140!!真拉