#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace std::chrono; typedef long long int llint; typedef double lldo; #define mp make_pair #define mt make_tuple #define pub push_back #define puf push_front #define pob pop_back #define pof pop_front #define fir first #define sec second #define res resize #define ins insert #define era erase /*cout<bool mineq(T& a,U b){if(a>b){a=b;return true;}return false;} template bool maxeq(T& a,U b){if(a void SO(T& ve){sort(ve.begin(),ve.end());} template void REV(T& ve){reverse(ve.begin(),ve.end());} templatellint LBI(vector&ar,T in){return lower_bound(ar.begin(),ar.end(),in)-ar.begin();} templatellint UBI(vector&ar,T in){return upper_bound(ar.begin(),ar.end(),in)-ar.begin();} int main(void){ cin.tie(0);ios::sync_with_stdio(false); llint n,Q,i,j,A;cin>>n>>Q; sethna; for(i=0;i<=n;i++){hna.ins(i);} static llint sco[262144]={}; for(i=1;i<=n;i++){cin>>A;sco[i+131072]=A;} for(i=131071;i>0;i--){sco[i]=sco[i+i]+sco[i+i+1];} while(Q--){ int que,x;cin>>que>>x; if(que==1){hna.era(x);} if(que==2){hna.ins(x);} if(que==3){ int bas=x+131072; while(bas>0){sco[bas]++;bas/=2;} } if(que==4){ int L=*prev(hna.lower_bound(x)); int R=*hna.lower_bound(x); L+=131073;R+=131073; llint ans=0; while(R>1){ if(R%2==1){ans+=sco[R-1];} R/=2; } while(L>1){ if(L%2==1){ans-=sco[L-1];} L/=2; } cout<