#include <bits/stdc++.h>
using namespace std;
typedef deque<int>::iterator aaa;
deque<int> q(100100,0);
aaa findq[100100];
int main()
{
int n;
bool aa[100100]={0};
cin>>n;
q.push_front(1);
findq[1]=q.begin();
for(int i=2;i<=n;i++){
int m,opt;
cin>>m>>opt;
if(opt){
q.insert(findq[m]+1,1,i);
findq[i]=findq[m]+1;
}
else{
q.insert(findq[m],1,i);
findq[i]=findq[m]-1;
}
}
int mm;
cin>>mm;
while(mm--){
int l;
cin>>l;
if(aa[l]==true){
continue;
}
q.erase(findq[l]);
aa[l]=1;;
}
for(aaa it=q.begin();it!=q.end();it++){
cout<<*it;
}
return 0;
}