#include using namespace std; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int N; cin >> N; vector st; vector> G(N); vector deg(N); vector A(N), B(N); for (int i = 0; i < N; i++) { cin >> A[i] >> B[i]; if (A[i]) { G[i + 1].push_back(i); deg[i]++; } } for (int i = N; i--;) { if (B[i] == 1) st.push_back(i); else if (B[i] == 2) { assert(!st.empty()); int j = st.back(); G[j].push_back(i); deg[i]++; } } priority_queue, greater> q; for (int i = 0; i < N; i++) if (deg[i] == 0) q.push(i); vector ans(N); int id = 0; while (q.size()) { int v = q.top(); ans[id++] = v + 1; q.pop(); for (int u : G[v]) { if (--deg[u] == 0) q.push(u); } } for (int i = 0; i < N; i++) cout << ans[i] << "\n"; }