#include <bits/stdc++.h>
#define fastIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define fi first
#define se second
#define For(i, a, b) for (int i = a; i <= b; i++)
#define ForRL(i, a, b) for (int i = a; i >= b; i--)
#define rep(i, n) for (int i = 0; i < n; i++)
#define repRL(i, n) for (int i = (n) - 1; i >= 0; i--)
#define pb push_back
#define coutE(x) {cout << x; exit(0);}
#define cinStr(x, n) cin >> x; x = ' ' + x; n = x.size() - 1;
#define Bitcnt(x) __builtin_popcount(x)
#define all(x) x.begin(), x.end()
#define bs binary_search
#define ub upper_bound
#define lb lower_bound
#define endl '\n'
#define ll long long
#define ii pair<int, int>
#define vi vector<int>
#define vii vector<ii>
using namespace std;
const int N = 1e5 + 5;
const int MOD = 1e9 + 7;
const int INF = 1e9;
const long long LINF = 1e18;
const int B = 320;
const int dx[] = {1, 0, 0, -1};
const int dy[] = {0, 1, -1, 0};
mt19937_64 rng(time(0));
void file(string s){
if (s.empty()) return;
freopen((s + ".inp").c_str(), "r", stdin);
freopen((s + ".out").c_str(), "w", stdout);
}
struct query{
int l, r, t, i;
bool operator < (query &q){
if (l/B != q.l/B) return l/B < q.l/B;
return r < q.r;
}
};
int n, q, a[N];
int x, y, cur;
int ans[N];
int sumB[B + 5], cntB[B + 5], cnt[B + 5][B + 5];
vector<query> quer;
void add(int x){
int block = x/B;
sumB[block] += x; cntB[block]++;
cnt[block][x % B]++;
}
void remove(int x){
int block = x/B;
sumB[block] -= x; cntB[block]--;
cnt[block][x % B]--;
}
void MO(query Q){
int l = Q.l, r = Q.r, t = Q.t, i = Q.i;
while (l < x) add(a[--x]);
while (y < r) add(a[++y]);
while (x < l) remove(a[x++]);
while (r < y) remove(a[y--]);
int res = 0;
For(block, 0, B){
if (t >= sumB[block]) t -= sumB[block], res += cntB[block];
else{
rep(tmp, B){
int val = block * B + tmp;
if (!val || val > t) continue;
int v = min(cnt[block][tmp], t/val);
res += v;
t -= v * val;
}
break;
}
}
ans[i] = res;
}
void solve(){
cin >> n >> q;
For(i, 1, n) cin >> a[i];
rep(i, q){
int l, r, t; cin >> l >> r >> t;
quer.pb({l, r, t, i});
}
sort(all(quer));
x = quer[0].l, y = quer[0].l - 1;
for (query Q: quer) MO(Q);
rep(i, q) cout << ans[i] << endl;
}
signed main(){
fastIO; file("");
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGZhc3RJTyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKCiNkZWZpbmUgRm9yKGksIGEsIGIpIGZvciAoaW50IGkgPSBhOyBpIDw9IGI7IGkrKykKI2RlZmluZSBGb3JSTChpLCBhLCBiKSBmb3IgKGludCBpID0gYTsgaSA+PSBiOyBpLS0pCiNkZWZpbmUgcmVwKGksIG4pIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQojZGVmaW5lIHJlcFJMKGksIG4pIGZvciAoaW50IGkgPSAobikgLSAxOyBpID49IDA7IGktLSkKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBjb3V0RSh4KSB7Y291dCA8PCB4OyBleGl0KDApO30KI2RlZmluZSBjaW5TdHIoeCwgbikgY2luID4+IHg7IHggPSAnICcgKyB4OyBuID0geC5zaXplKCkgLSAxOwoKI2RlZmluZSBCaXRjbnQoeCkgX19idWlsdGluX3BvcGNvdW50KHgpCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIGJzIGJpbmFyeV9zZWFyY2gKI2RlZmluZSB1YiB1cHBlcl9ib3VuZAojZGVmaW5lIGxiIGxvd2VyX2JvdW5kCiNkZWZpbmUgZW5kbCAnXG4nCgojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGlpIHBhaXI8aW50LCBpbnQ+CiNkZWZpbmUgdmkgdmVjdG9yPGludD4KI2RlZmluZSB2aWkgdmVjdG9yPGlpPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBOID0gMWU1ICsgNTsKCmNvbnN0IGludCBNT0QgPSAxZTkgKyA3Owpjb25zdCBpbnQgSU5GID0gMWU5Owpjb25zdCBsb25nIGxvbmcgTElORiA9IDFlMTg7Cgpjb25zdCBpbnQgQiA9IDMyMDsKCmNvbnN0IGludCBkeFtdID0gezEsIDAsIDAsIC0xfTsKY29uc3QgaW50IGR5W10gPSB7MCwgMSwgLTEsIDB9OwoKbXQxOTkzN182NCBybmcodGltZSgwKSk7Cgp2b2lkIGZpbGUoc3RyaW5nIHMpewoKICAgIGlmIChzLmVtcHR5KCkpIHJldHVybjsKCiAgICBmcmVvcGVuKChzICsgIi5pbnAiKS5jX3N0cigpLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oKHMgKyAiLm91dCIpLmNfc3RyKCksICJ3Iiwgc3Rkb3V0KTsKfQoKc3RydWN0IHF1ZXJ5ewoJaW50IGwsIHIsIHQsIGk7CgkKCWJvb2wgb3BlcmF0b3IgPCAocXVlcnkgJnEpewoJCWlmIChsL0IgIT0gcS5sL0IpIHJldHVybiBsL0IgPCBxLmwvQjsKCQlyZXR1cm4gciA8IHEucjsKCX0KfTsKCmludCBuLCBxLCBhW05dOwppbnQgeCwgeSwgY3VyOwppbnQgYW5zW05dOwppbnQgc3VtQltCICsgNV0sIGNudEJbQiArIDVdLCBjbnRbQiArIDVdW0IgKyA1XTsKdmVjdG9yPHF1ZXJ5PiBxdWVyOwoKdm9pZCBhZGQoaW50IHgpewoJCglpbnQgYmxvY2sgPSB4L0I7CglzdW1CW2Jsb2NrXSArPSB4OyBjbnRCW2Jsb2NrXSsrOwoJY250W2Jsb2NrXVt4ICUgQl0rKzsKfQoKdm9pZCByZW1vdmUoaW50IHgpewoJCglpbnQgYmxvY2sgPSB4L0I7CglzdW1CW2Jsb2NrXSAtPSB4OyBjbnRCW2Jsb2NrXS0tOwoJY250W2Jsb2NrXVt4ICUgQl0tLTsKfQoKdm9pZCBNTyhxdWVyeSBRKXsKCQoJaW50IGwgPSBRLmwsIHIgPSBRLnIsIHQgPSBRLnQsIGkgPSBRLmk7CgkKCXdoaWxlIChsIDwgeCkgYWRkKGFbLS14XSk7Cgl3aGlsZSAoeSA8IHIpIGFkZChhWysreV0pOwoJd2hpbGUgKHggPCBsKSByZW1vdmUoYVt4KytdKTsKCXdoaWxlIChyIDwgeSkgcmVtb3ZlKGFbeS0tXSk7CgkKCWludCByZXMgPSAwOwoJRm9yKGJsb2NrLCAwLCBCKXsKCQkKCQlpZiAodCA+PSBzdW1CW2Jsb2NrXSkgdCAtPSBzdW1CW2Jsb2NrXSwgcmVzICs9IGNudEJbYmxvY2tdOwoJCWVsc2V7CgkJCXJlcCh0bXAsIEIpewoJCQkJCgkJCQlpbnQgdmFsID0gYmxvY2sgKiBCICsgdG1wOwoJCQkJaWYgKCF2YWwgfHwgdmFsID4gdCkgY29udGludWU7CgkJCQkKCQkJCWludCB2ID0gbWluKGNudFtibG9ja11bdG1wXSwgdC92YWwpOwoJCQkJCgkJCQlyZXMgKz0gdjsKCQkJCXQgLT0gdiAqIHZhbDsKCQkJfQoJCQkKCQkJYnJlYWs7CgkJfQoJfQoJCglhbnNbaV0gPSByZXM7Cn0KCnZvaWQgc29sdmUoKXsKCgljaW4gPj4gbiA+PiBxOwoJRm9yKGksIDEsIG4pIGNpbiA+PiBhW2ldOwoJCglyZXAoaSwgcSl7CgkJaW50IGwsIHIsIHQ7IGNpbiA+PiBsID4+IHIgPj4gdDsKCQlxdWVyLnBiKHtsLCByLCB0LCBpfSk7Cgl9CgkKCXNvcnQoYWxsKHF1ZXIpKTsKCQoJeCA9IHF1ZXJbMF0ubCwgeSA9IHF1ZXJbMF0ubCAtIDE7Cglmb3IgKHF1ZXJ5IFE6IHF1ZXIpIE1PKFEpOwoJCglyZXAoaSwgcSkgY291dCA8PCBhbnNbaV0gPDwgZW5kbDsKfQoKCnNpZ25lZCBtYWluKCl7CgoJZmFzdElPOyBmaWxlKCIiKTsKCglzb2x2ZSgpOwoKCXJldHVybiAwOwp9