#include<stdio.h>
#include<stdlib.h>
typedef struct s {
int order;
struct s* next;
struct s* front;
} ss;
int hash[100005];
int main() {
ss *list,*p,*temp;
list=(ss*)malloc(sizeof(ss));
list->order=1;
list->front=list->next=NULL;
int n,m;
int stu,lor;
scanf("%d",&n);
for(int i=1; i<n; i++) {
scanf("%d%d",&stu,&lor);
p=(ss *)malloc(sizeof(ss));
p->order=i+1;
if(lor==0) {
temp=list;
while(temp!=NULL) {
if(temp->order==stu) {
if(temp==list) {
temp->front=p;
p->next=temp;
list=p;
} else {
p->front=temp->front;
temp->front->next=p;
p->next=temp;
temp->front=p;
}
break;
} else {
temp=temp->next;
}
}
}
if(lor==1) {
temp=list;
while(temp!=NULL) {
if(temp->order==stu) {
p->front=temp;
p->next=temp->next;
temp->next=p;
break;
} else {
temp=temp->next;
}
}
}
}
scanf("%d",&m);
for(int i=0; i<m; i++) {
scanf("%d",&stu);
temp=list;
if(hash[stu]==1) {
continue;
}
hash[stu]=1;
while(temp!=NULL) {
if(temp->order==stu) {
if(temp==list) {
list=temp->next;
free(temp);
}
else{
temp->front->next=temp->next;
temp->next->front=temp->front;
free(temp);
}
break;
}
else temp=temp->next;
}
}
temp=list;
while(temp!=NULL){
printf("%d ",temp->order);
temp=temp->next;
}
}