#include using namespace std; using vi = vector; using vl = vector; #define rep(i, a, b) for(long i = (a); i < long(b); i++) using ll = long long; int main() { int N, Q; cin >> N >> Q; vector>A(N+N); vector> S(N+N, {0}); rep(i,0,N){ int a; cin >> a; A[i+N].push_back(a); S[i+N].push_back(a); } rep(j,0,N-1) { int i = N - j - 1; A[i].resize(A[i+i].size() + A[i+i+1].size()); std::merge(A[i+i].begin(),A[i+i].end(),A[i+i+1].begin(),A[i+i+1].end(),A[i].begin()); int n = A[i].size(); S[i].resize(n + 1); rep(j, 0, n) S[i][j + 1] = S[i][j] + A[i][j]; } while(Q--) { ll L, R, X; cin >> L >> R >> X; L--; L += N, R += N; ll ans = 0; while (L < R) { if (L & 1) { int n = lower_bound(A[L].begin(),A[L].end(),X) - A[L].begin(); ll s = S[L][n] + (A[L].size() - n) * X; ans += s; L++; } if (R & 1) { R--; int n = lower_bound(A[R].begin(),A[R].end(),X) - A[R].begin(); ll s = S[R][n] + (A[R].size() - n) * X; ans += s; } L >>= 1, R >>= 1; } cout << ans << endl; } }