#include <bits/stdc++.h>
using namespace std;
const int MaxN=2e5;
const int MaxA=2e5;
vector<int> pos[MaxA+1];
int add[MaxA+1]={};
int tag[MaxA+1];
int main() {
int N, t, x;
cin>>N;
for(int n=1; n<=N; n++){
cin>>t>>x;
if(t==1){
pos[x].push_back(n);
}else{
if(pos[x].empty()){
cout<<-1;
return 0;
}
}
add[n]-=1;
add[pos[x].back()]++;
pos[x].pop_back();
}
//差分
int ans=0;
int now=0;
for(int n=1; n<=N; n++){
now+=add[n];
ans=max(ans,now);
}
cout<<ans<<"\n";
for(int n=1; n<=N; n+=1)
if( -1<tag[n] )
cout<<tag[n]<<" ";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBNYXhOPTJlNTsKY29uc3QgaW50IE1heEE9MmU1OwoKdmVjdG9yPGludD4gcG9zW01heEErMV07CmludCBhZGRbTWF4QSsxXT17fTsKaW50IHRhZ1tNYXhBKzFdOwoKaW50IG1haW4oKSB7CglpbnQgTiwgdCwgeDsKCWNpbj4+TjsKCWZvcihpbnQgbj0xOyBuPD1OOyBuKyspewoJCWNpbj4+dD4+eDsKCQlpZih0PT0xKXsKCQkJcG9zW3hdLnB1c2hfYmFjayhuKTsKCQl9ZWxzZXsKCQkJaWYocG9zW3hdLmVtcHR5KCkpewoJCQkJY291dDw8LTE7CgkJCQlyZXR1cm4gMDsKCQkJfQoJCX0KCQlhZGRbbl0tPTE7CgkJYWRkW3Bvc1t4XS5iYWNrKCldKys7CgkJcG9zW3hdLnBvcF9iYWNrKCk7Cgl9CgkvL+W3ruWIhgoJaW50IGFucz0wOwoJaW50IG5vdz0wOwoJZm9yKGludCBuPTE7IG48PU47IG4rKyl7CgkJbm93Kz1hZGRbbl07CgkJYW5zPW1heChhbnMsbm93KTsKCX0KCWNvdXQ8PGFuczw8IlxuIjsKCWZvcihpbnQgbj0xOyBuPD1OOyBuKz0xKQoJCWlmKCAtMTx0YWdbbl0gKQoJCQljb3V0PDx0YWdbbl08PCIgIjsKCXJldHVybiAwOwp9