#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll INF=1LL<<60; typedef pair P; typedef pair PP; const ll MOD=1e9+7; int main(){ int Q; cin>>Q; vector ans(31,0); vector digit(31,0);//2進数で見た際にstにあるなかで最高桁はいくつか set st; vector c; for(int q=0;q>t; if(t==1){ int x; cin>>x; if(!st.count(x)){ st.insert(x); { for(int i=0;i<=30;i++){ if(((x>>i)&1)==0){ ans[i]++; } } } { int i=0; while(x>0){ /* if(((x>>i)&1)==0){ //xの2^i桁目が0ならカウント ans[i]++; } */ digit[i]++; i++; x/=2; } } } }else if(t==2){ int x; cin>>x; if(st.count(x)){ { for(int i=0;i<=30;i++){ if(((x>>i)&1)==0){ ans[i]--; } } } st.erase(x); int i=0; while(x>0){ /* if(((x>>i)&1)==0){ //xの2^i桁目が0ならカウント ans[i]--; } */ digit[i]--; i++; x/=2; } } }else{ //t==3 int output=0; if(st.size()==0){ output=-1; }else{ for(int i=0;i<=30;i++){ if(digit[i]==0)break; if(ans[i]==0){ output|=1<