#include #include using namespace std; using namespace atcoder; using ll = long long; #define rep(i, n) for(int i = 0; i < ((int) n); i++) constexpr int SIZE = 10; constexpr ll INF = 1e18; using Data = array; int main() { auto op = [](Data x, Data y) { Data res; int ptr_x = 0, ptr_y = 0; rep(i, SIZE) { if (x[ptr_x] <= y[ptr_y]) { res[i] = x[ptr_x]; ptr_x++; } else { res[i] = y[ptr_y]; ptr_y++; } } return res; }; auto e = []() { return Data{INF, INF, INF, INF, INF, INF, INF, INF, INF, INF}; }; auto to_data = [](ll x) { return Data{x, INF, INF, INF, INF, INF, INF, INF, INF, INF}; }; int N, Q; cin >> N >> Q; vector datas(N); rep(i, N) { ll s; cin >> s; datas[i] = to_data(s); } segtree seg(datas); rep(_, Q) { int L, R, X; cin >> L >> R >> X; Data res = seg.prod(L - 1, R); ll ans = 0; rep(i, X) { ans += res[i]; } cout << ans << '\n'; } }