#include <iostream>
using namespace std;
int n, m;
struct list {
int l;
int r;
} a[100005];
void jr(int x, int k, bool p) {
if (!p) {
a[x].l = a[k].l;
a[a[x].l].r = x;
a[x].r = k;
a[k].l = x;
} else {
a[x].r = a[k].r;
a[a[x].r].l = x;
a[x].l = k;
a[k].r = x;
}
}
void sc(int x) {
a[a[x].l].r = a[x].r;
a[a[x].r].l = a[x].l;
}
int main() {
cin >> n;
a[0].l = 0;
a[0].r = 0;
jr(1, 0, 1);
for (int i = 1; i <= n; i++) {
int k;
bool p;
cin >> k >> p;
jr(i, k, p);
}
cin >> m;
for (int i = 1; i <= m; i++) {
int x;
cin >> x;
sc(x);
}
int now = a[0].r;
while (now != 0) {
cout << now << ' ';
now = a[now].r;
}
return 0;
}
大佬们帮忙看看为什么这个代码无限输出