#include <iostream>
#include<algorithm>
#include <string>
#include <vector>
#include<queue>
using namespace std;
queue<int>q;
vector<int>v;
int N;
int main()
{
cin >> N;
v.push_back(1);
int a, b;
for (int i = 2; i <= N ; i++)
{
cin >> a >> b;
if (b == 0)
{
v.insert(find(v.begin(), v.end(), a), i);
}
else if (b == 1)
{
v.insert(find(v.begin(), v.end(), a)+1, i);
}
}
int M;
cin >> M;
for (int i = 0; i < M; i++)
{
int tmp;
cin >> tmp;
if (find(v.begin(), v.end(), tmp) != v.end())
{
v.erase(find(v.begin(), v.end(), tmp));
}
else
continue;
}
for (auto& it : v)
{
cout << it << " ";
}
return 0;
}