#include<iostream>
#include<map>
#include<list>
using namespace std;
int main()
{
list<int>student;
map<int, list<int>::iterator>mp;
int N;//总人数
int k, p;//k为目标同学(k为已在队列中的),p为0左边,为1右边
int M;//踢出人数
int x[100000];//的同学
int begin=1;
cin >> N;
student.push_front(1);
list<int>::iterator pos;
mp[begin] = student.begin();
for (int i = 2; i <= N; i++)
{
cin >> k >> p;
if (p == 0)
{
student.insert(mp[k], i);//插入左边
for (pos = mp[k]; ; pos--)//map定位每一个同学的地址//重复定位
{
mp[*pos] = pos;
if (*pos==i)
{
mp[*pos] = pos;
break;
}
}
}
else if(p==1)
{
if (mp[k] == --student.end()||student.size() == 1)//插入右边
{
student.push_back(i);
for (pos = mp[k]; ; pos++)//map定位每一个同学的地址//重复定位
{
mp[*pos] = pos;
if (*pos == i)
{
mp[*pos] = pos;
break;
}
}
}
else
{
pos = mp[k];
pos++;
student.insert(pos, i);//插入右边
for (pos = mp[k]; ; pos++)//map定位每一个同学的地址//重复定位
{
mp[*pos] = pos;
if (*pos == i)
{
mp[*pos] = pos;
break;
}
}
}
}
}
cin >> M;
for (int i = 1; i <= M; i++)//储存踢人名单
cin >> x[i];
for (int i = 1; i <= M; i++)//踢出
student.remove(x[i]);
pos = student.begin();
while (pos != student.end())//输出
{
cout << *pos << ' ';
pos++;
}
return 0;
}