#include using namespace std; struct Fenwick_tree{ private: unsigned int siz=1; int dat[1]; public: Fenwick_tree(int N){ siz=N; memset(dat,0,siz); } void add(int k,int x){ for(int i=k;i0){ if(ans+h<=siz){ if(res+dat[ans+h-1]<=x){ res+=dat[ans+h-1]; ans+=h; } } h/=2; } return ans; } }; 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; data.emplace_back(x); query[i]={c,k,x}; continue; } if(c==2){ query[i]={c}; continue; } int k; cin >> k; query[i]={c,k}; } 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; vector change2(N,false); Fenwick_tree tree(relation.size()); for(int i=0;i