#include <bits/stdc++.h>
using namespace std;
#define int long long
#define bint __int128
#define _3bkarm cin.tie(NULL); cout.tie(NULL); ios::sync_with_stdio(false);
struct BIT {
int n;
vector<int> tree;
void init(int _n) { n = _n, tree.assign(n, 0); }
void add(int at, int value) {
for (int i = at + 1; i <= n; i += i & -i) {
tree[i - 1] += value;
}
}
int sum(int exc) {
int ans = 0;
for (int i = exc; i > 0; i -= i & -i) {
ans += tree[i - 1];
}
return ans;
}
int sum(int inc, int exc) {
return sum(exc) - sum(inc);
}
};
void getShitDone() {
int y, n; cin >> y >> n;
vector<array<int, 2>> x(y);
for(int i = 0; i < y; i++){
cin >> x[i][0];
x[i][1] = i + 1;
}
vector<array<int, 4>> v(n);
vector<int> ans(n, -1);
for(int i = 0; i < n; i++){
cin >> v[i][1] >> v[i][0] >> v[i][2];
v[i][3] = i;
if(v[i][0] <= x[v[i][1] - 1][0])
ans[i] = 0;
}
sort(x.rbegin(), x.rend());
sort(v.rbegin(), v.rend());
int cur = 0;
BIT tree; tree.init(y + 10);
for(int i = 0; i < n; i++){
int id = v[i][3], p = v[i][0], a = v[i][1], f = v[i][2];
while(cur < y && p <= x[cur][0]){
tree.add(x[cur][1], 1);
cur++;
}
if(ans[id] != -1)
continue;
ans[id] = tree.sum(a + 1, a + f + 1);
}
for(auto it : ans)
cout << it << '\n';
}
signed main() {
_3bkarm
int ts = 1;
// cin >> ts;
while (ts--) getShitDone();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgYmludCBfX2ludDEyOAojZGVmaW5lIF8zYmthcm0gY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7IGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCnN0cnVjdCBCSVQgewogICAgaW50IG47CiAgICB2ZWN0b3I8aW50PiB0cmVlOwoKICAgIHZvaWQgaW5pdChpbnQgX24pIHsgbiA9IF9uLCB0cmVlLmFzc2lnbihuLCAwKTsgfQoKICAgIHZvaWQgYWRkKGludCBhdCwgaW50IHZhbHVlKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IGF0ICsgMTsgaSA8PSBuOyBpICs9IGkgJiAtaSkgewogICAgICAgICAgICB0cmVlW2kgLSAxXSArPSB2YWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgaW50IHN1bShpbnQgZXhjKSB7CiAgICAgICAgaW50IGFucyA9IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IGV4YzsgaSA+IDA7IGkgLT0gaSAmIC1pKSB7CiAgICAgICAgICAgIGFucyArPSB0cmVlW2kgLSAxXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KCiAgICBpbnQgc3VtKGludCBpbmMsIGludCBleGMpIHsKICAgICAgICByZXR1cm4gc3VtKGV4YykgLSBzdW0oaW5jKTsKICAgIH0KfTsKCnZvaWQgZ2V0U2hpdERvbmUoKSB7CiAgICBpbnQgeSwgbjsgY2luID4+IHkgPj4gbjsKICAgIHZlY3RvcjxhcnJheTxpbnQsIDI+PiB4KHkpOwogICAgZm9yKGludCBpID0gMDsgaSA8IHk7IGkrKyl7CiAgICAgICAgY2luID4+IHhbaV1bMF07CiAgICAgICAgeFtpXVsxXSA9IGkgKyAxOwogICAgfQoKICAgIHZlY3RvcjxhcnJheTxpbnQsIDQ+PiB2KG4pOwogICAgdmVjdG9yPGludD4gYW5zKG4sIC0xKTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgICAgIGNpbiA+PiB2W2ldWzFdID4+IHZbaV1bMF0gPj4gdltpXVsyXTsKICAgICAgICB2W2ldWzNdID0gaTsKICAgICAgICBpZih2W2ldWzBdIDw9IHhbdltpXVsxXSAtIDFdWzBdKQogICAgICAgICAgICBhbnNbaV0gPSAwOwogICAgfQoKICAgIHNvcnQoeC5yYmVnaW4oKSwgeC5yZW5kKCkpOwogICAgc29ydCh2LnJiZWdpbigpLCB2LnJlbmQoKSk7CgogICAgaW50IGN1ciA9IDA7CiAgICBCSVQgdHJlZTsgdHJlZS5pbml0KHkgKyAxMCk7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKICAgICAgICBpbnQgaWQgPSB2W2ldWzNdLCBwID0gdltpXVswXSwgYSA9IHZbaV1bMV0sIGYgPSB2W2ldWzJdOwogICAgICAgIHdoaWxlKGN1ciA8IHkgJiYgcCA8PSB4W2N1cl1bMF0pewogICAgICAgICAgICB0cmVlLmFkZCh4W2N1cl1bMV0sIDEpOwogICAgICAgICAgICBjdXIrKzsKICAgICAgICB9CgogICAgICAgIGlmKGFuc1tpZF0gIT0gLTEpCiAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICBhbnNbaWRdID0gdHJlZS5zdW0oYSArIDEsIGEgKyBmICsgMSk7CiAgICB9CgogICAgZm9yKGF1dG8gaXQgOiBhbnMpCiAgICAgICAgY291dCA8PCBpdCA8PCAnXG4nOwoKfQoKc2lnbmVkIG1haW4oKSB7CiAgICBfM2JrYXJtCgogICAgaW50IHRzID0gMTsKLy8gICAgY2luID4+IHRzOwogICAgd2hpbGUgKHRzLS0pIGdldFNoaXREb25lKCk7CgogICAgcmV0dXJuIDA7Cn0=