#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
#define eb emplace_back
#define pb push_back
#define fi first
#define se second
#define nn '\n'
#define pi pair<int, int>
#define unmp unordered_map
#define uns unordered_set
#define lb lower_bound
#define ub upper_bound
#define pq priority_queue
#define TASK " "
const int INF = 1e18;
const int mod = 1e9+7;
const int N = 5*1e5 + 5;
int MOD = 998244353;
int bit[200000];
int n, q;
map<int, vector<int>> mp;
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> q;
for(int i = 1; i <= n; i++){
int x; cin >> x;
mp[x].pb(i);
}
while(q--){
int l, r, x;
cin >> l >> r >> x;
auto it = mp.find(x);
if(it == mp.end()){
cout << 0 << nn;
continue;
}
auto &vt = it->se;
auto it1 = lb(vt.begin(), vt.end(), l);
auto it2 = ub(vt.begin(), vt.end(), r);
// int id1 = it1 - vt.begin();
// int id2 = it2 - vt.begin();
// cout << id1 << " " << id2 << nn;
cout << it2 - it1 << nn;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIG5uICdcbicKI2RlZmluZSBwaSBwYWlyPGludCwgaW50PgojZGVmaW5lIHVubXAgdW5vcmRlcmVkX21hcAojZGVmaW5lIHVucyB1bm9yZGVyZWRfc2V0CiNkZWZpbmUgbGIgbG93ZXJfYm91bmQKI2RlZmluZSB1YiB1cHBlcl9ib3VuZAojZGVmaW5lIHBxIHByaW9yaXR5X3F1ZXVlCiNkZWZpbmUgVEFTSyAiICIKCmNvbnN0IGludCBJTkYgPSAxZTE4Owpjb25zdCBpbnQgbW9kID0gMWU5Kzc7CmNvbnN0IGludCBOID0gNSoxZTUgKyA1OwppbnQgTU9EID0gOTk4MjQ0MzUzOwppbnQgYml0WzIwMDAwMF07CmludCBuLCBxOwptYXA8aW50LCB2ZWN0b3I8aW50Pj4gbXA7CnNpZ25lZCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsKICAgIGNvdXQudGllKDApOwogICAgY2luID4+IG4gPj4gcTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBpbnQgeDsgY2luID4+IHg7CiAgICAgICAgbXBbeF0ucGIoaSk7CiAgICB9CiAgICB3aGlsZShxLS0pewogICAgICAgIGludCBsLCByLCB4OwogICAgICAgIGNpbiA+PiBsID4+IHIgPj4geDsKICAgICAgICBhdXRvIGl0ID0gbXAuZmluZCh4KTsKICAgICAgICBpZihpdCA9PSBtcC5lbmQoKSl7CiAgICAgICAgICAgIGNvdXQgPDwgMCA8PCBubjsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICBhdXRvICZ2dCA9IGl0LT5zZTsKICAgICAgICBhdXRvIGl0MSA9IGxiKHZ0LmJlZ2luKCksIHZ0LmVuZCgpLCBsKTsKICAgICAgICBhdXRvIGl0MiA9IHViKHZ0LmJlZ2luKCksIHZ0LmVuZCgpLCByKTsKLy8gICAgICAgIGludCBpZDEgPSBpdDEgLSB2dC5iZWdpbigpOwovLyAgICAgICAgaW50IGlkMiA9IGl0MiAtIHZ0LmJlZ2luKCk7Ci8vICAgICAgICBjb3V0IDw8IGlkMSA8PCAiICIgPDwgaWQyIDw8IG5uOwogICAgICAgIGNvdXQgPDwgaXQyIC0gaXQxIDw8IG5uOwogICAgfQogICAgcmV0dXJuIDA7Cn0K