#include <bits/stdc++.h>
#define int long long
using namespace std;
bool f(int u,int p,vector<int> adj[],vector<int> &c,vector<int> &ans){
bool dec=false;
if(c[u]==1){
dec=true;
}
for(auto v:adj[u]){
if(v!=p){
dec = (dec & (c[v]==1));
f(v,u,adj,c,ans);
}
}
if(dec){
ans.push_back(u);
}
return dec;
}
void solve() {
int n;
cin>>n;
vector<int> c(n+1);
vector<int> adj[n+1];
int root;
for(int i=1;i<=n;i++){
int p,x;
cin>>p>>x;
c[i]=x;
if(p==-1){
root=i;
continue;
}
adj[p].push_back(i);
adj[i].push_back(p);
}
vector<int> ans;
f(root,-1,adj,c,ans);
sort(ans.begin(),ans.end());
if(ans.size()==0){
cout<<-1<<endl;
return;
}
for(auto j:ans){
cout<<j<<" ";
}
cout<<endl;
}
signed main() {
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBmKGludCB1LGludCBwLHZlY3RvcjxpbnQ+IGFkaltdLHZlY3RvcjxpbnQ+ICZjLHZlY3RvcjxpbnQ+ICZhbnMpewoJYm9vbCBkZWM9ZmFsc2U7CglpZihjW3VdPT0xKXsKCQlkZWM9dHJ1ZTsKCX0KCWZvcihhdXRvIHY6YWRqW3VdKXsKCQlpZih2IT1wKXsKCQkJZGVjID0gKGRlYyAmIChjW3ZdPT0xKSk7CgkJCWYodix1LGFkaixjLGFucyk7CgkJfQoJCQoJfQoJaWYoZGVjKXsKCQlhbnMucHVzaF9iYWNrKHUpOwoJfQoJcmV0dXJuIGRlYzsKCQp9CnZvaWQgc29sdmUoKSB7CiAgICBpbnQgbjsKICAgIGNpbj4+bjsKICAgIHZlY3RvcjxpbnQ+IGMobisxKTsKICAgIHZlY3RvcjxpbnQ+IGFkaltuKzFdOwogICAgaW50IHJvb3Q7CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKyl7CiAgICAJaW50IHAseDsKICAgIAljaW4+PnA+Png7CiAgICAJY1tpXT14OwogICAgCWlmKHA9PS0xKXsKICAgIAkJcm9vdD1pOwogICAgCQljb250aW51ZTsKICAgIAl9CQogICAgCWFkaltwXS5wdXNoX2JhY2soaSk7CiAgICAJYWRqW2ldLnB1c2hfYmFjayhwKTsKICAgIH0KICAgIHZlY3RvcjxpbnQ+IGFuczsKICAgIGYocm9vdCwtMSxhZGosYyxhbnMpOwogICAgc29ydChhbnMuYmVnaW4oKSxhbnMuZW5kKCkpOwogICAgaWYoYW5zLnNpemUoKT09MCl7CiAgICAJY291dDw8LTE8PGVuZGw7CiAgICAJcmV0dXJuOwogICAgfQogICAgZm9yKGF1dG8gajphbnMpewogICAgCWNvdXQ8PGo8PCIgIjsKICAgIH0KICAgIGNvdXQ8PGVuZGw7CiAgICAKICAgIAoJCiAgICAKICAgIAp9CgpzaWduZWQgbWFpbigpIHsKICAgCiAgICAgICAgc29sdmUoKTsKICAgIAogICAgcmV0dXJuIDA7Cn0K