#include using namespace std; #define int long long struct SEG{ private: int n; vector node; public: SEG(int N){ n = 1; while(n < N) n *= 2; node.resize(2*n+1); } void add(int i, int x){ for(i++;i<=n;i+=i&-i) node[i] += x; } int f_(int i){ int ans = 0; for(;i>0;i-=i&-i) ans += node[i]; return ans; } int f(int l, int r){ return f_(r)-f_(l); } }; signed main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); srand((unsigned)time(NULL)); int N,Q; cin>>N>>Q; vector> I(N); for(int i=0;i>a; I[i] = {a,i}; } sort(I.begin(),I.end()); vector L(Q), R(Q), K(Q), AC(Q), WA(Q); for(int i=0;i>L[i]>>R[i]>>K[i]; L[i]--; AC[i] = -1; // -1 個選んでいる状態では <= K WA[i] = N+1; // N+1 個は選べないので } int pb = 18; vector Ans(Q); while(pb--){ SEG segk(N), segc(N); // kosuu cost vector> Ls(N+1); for(int i=0;i