#include using namespace std; struct Fenwick_tree{ private: unsigned int siz=1; vector dat; public: Fenwick_tree(int N) : dat(N,0){ siz=N; } void add(int k,int x){ for(int i=k;isiz){ return sum(siz); } int ans=0; for(int i=k-1;i>=0;i-=((i+1)&(-i-1))){ ans+=dat[i]; } return ans; } int max_right(int x){ //A[0]+A[1]+...+A[k-1]<=xを満たす最大のk int l=0; int r=siz; while((r-l)>1){ int m=(l+r)/2; if(sum(m)<=x){ l=m; continue; } r=m; } return l; } }; signed main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N,Q; cin >> N >> Q; vector A(N); for(int i=0;i> A[i]; } vector data=A; vector> query(Q); for(int i=0;i> c; if(c==1){ int k; long long x; cin >> k >> x; vector vec={c,k,x}; data.emplace_back(x); query[i]=vec; continue; } if(c==2){ vector vec={c}; query[i]=vec; continue; } int k; cin >> k; vector vec={c,k}; query[i]=vec; } vector data2=data; sort(data2.begin(),data2.end()); data2.erase(unique(data2.begin(),data2.end()),data2.end()); for(long long &i : data){ i=lower_bound(data2.begin(),data2.end(),i)-data2.begin(); } vector relation(*max_element(data.begin(),data.end())+1); for(int i=0;i change; Fenwick_tree tree(relation.size()); for(int i=0;i