#include<stdio.h>
#include<stdlib.h>
typedef struct person{
int num;
struct person*next;
struct person*last;
}per;
int main()
{
int m, n, i, j, k, c, y, x;
per *head, *tail, *cur, *tmp;
head = (per*)malloc(sizeof(per));
head->last = NULL;
cur = head;
cur->num = 1;
tail = NULL;
cur->next = tail;
scanf("%d", &m);
for (i = 0; i < m-1; i++){
scanf("%d%d", &y, &x);
cur = head;
if (x == 0){
for (j = 0; j <= i; j++){
if (cur->num == y){
if (cur->last == NULL) {
cur->last = (per*)malloc(sizeof(per));
cur->last->last = NULL;
cur->last->num = i + 2;
head = cur->last;
head->next = cur;
}
else {
tmp = cur->last;
cur->last = (per*)malloc(sizeof(per));
cur->last->num = i + 2;
tmp->next = cur->last;
cur->last->last = tmp;
cur->last->next = cur;
}
break;
}
cur = cur->next;
}
}
else if (x == 1){
for (j = 0; j <= i; j++){
if (cur->num == y){
if (cur->next == NULL) {
cur->next = (per*)malloc(sizeof(per));
cur->next->num = i + 2;
cur->next->next = NULL;
tail = cur->next->next;
}
else{
tmp = cur->next;
cur -> next = (per*)malloc(sizeof(per));
cur->next->num = i + 2;
tmp->last = cur->next;
cur->next->next = tmp;
cur->next->last = cur;
}
break;
}
cur = cur->next;
}
}
}
scanf("%d", &n);
for (j = 0; j < n; j++){
scanf("%d", &c);
cur = head;
while (cur != tail){
if (cur->num == c){
cur->num = 0;
break;
}
cur = cur->next;
}
}
cur = head;
while (cur != tail){
if (cur->num != 0){
printf("%d ", cur->num);
}
cur = cur->next;
}
return 0;
}