#include using namespace std; //HEADER START void init(int,vector); void insert(int); void erase(int); int f(int); //HEADER END const int max_N=75000; const int max_M=75000; const int max_K=18; const int bsize=1.66*sqrt(75000); int q_size; int q_val[bsize+1]; int q_type[bsize+1]; int cnt[1<=0;mask--){ if (!(mask&(1< a) { for (auto i:a){ cnt[i]++; } recalc(); } void insert(int x) { if (q_size>=bsize){ q_size=0; recalc(); } cnt[x]++; q_val[q_size]=x; q_type[q_size]=1; q_size++; } void erase(int x) { if (q_size>=bsize){ q_size=0; recalc(); } cnt[x]--; q_val[q_size]=x; q_type[q_size]=-1; q_size++; } int get_nad_mask(int mask) { int res=dp[mask]; for (int i=0;i=0;i--){ if (get_nad_mask(res^(1<=x){ res+=(1<>n>>m>>k; vector a(n); for (auto& i:a){ cin>>i; } init(n,k,a); vector v; for (int i=0;i>type>>x; if (type==1){ insert(x); } else if (type==2){ erase(x); } else{ v.push_back(f(x)); } } for(auto a : v){ cout << a << "\n"; } }