#include #define int long long using namespace std; const int N=1000010; const int INF=0x3f3f3f3f3f3f3f3f; int n,q; struct BIT{ int t[N]; int lowbit(int x){return x&-x;} void update(int x,int y){ for(int i=x;i<=n;i+=lowbit(i))t[i]+=y; return; } int ask(int x){ int res=0; for(int i=x;i>=1;i-=lowbit(i))res+=t[i]; return res; } int query(int l,int r){ return ask(r)-ask(l-1); } }T,S; signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>q; for(int i=1;i<=n;i++){ int x;cin>>x; S.update(i,x); } while(q--){ int op,x; cin>>op>>x; if(op==1){ if(T.query(x,x)==0)T.update(x,1); } if(op==2){ if(T.query(x,x)==1)T.update(x,-1); } if(op==3){ S.update(x,1); } if(op==4){ int l=x,r=x; int ll=1,rr=x-1,mid; while(ll<=rr){ mid=(ll+rr)>>1; if(T.query(mid,x-1)>=x-mid){ l=mid; rr=mid-1; } else ll=mid+1; } ll=x,rr=n; while(ll<=rr){ mid=(ll+rr)>>1; if(T.query(x,mid)