#include <iostream>
#include <bitset>
using namespace std;
int nxt[100005], pre[100005];
bitset<100005> flag;
int head = 1;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int n;
cin >> n;
flag[1] = 1;
for (int i=1;i<=n;i++)
nxt[i] = pre[i] = i;
for (int i=2;i<=n;i++)
{
int k, p;
cin >> k >> p;
if (k == head && p == 0)
{
head = i;
}
if (p == 0)
{
nxt[pre[k]] = i;
pre[i] = nxt[k];
nxt[i] = k;
pre[k] = i;
}
else
{
pre[nxt[k]] = i;
nxt[i] = nxt[k];
pre[i] = k;
nxt[k] = i;
}
flag[i] = 1;
}
int m;
cin >> m;
for (int i=1;i<=m;i++)
{
int x;
cin >> x;
if (!flag[x])
continue;
else
{
if (x == head)
{
x = nxt[x];
}
nxt[pre[x]] = nxt[x];
pre[nxt[x]] = pre[x];
flag[x] = 0;
}
}
int i = nxt[head];
cout << head << " ";
while (i != head && nxt[i] != i)
{
cout << i << " ";
i = nxt[i];
}
return 0;
}
记录