#include <iostream>
#include <map>
using namespace std;
long long n, m, x, y, x1, y1, x2, y2;
map <long long, map<long long, long long> > c;
long long lowbit(long long x)
{
return x & -x;
}
void update(long long nowx, long long nowy, long long k)
{
for (int nx = nowx;nx <= 2000000;nx += lowbit(nx))
{
for (int ny = nowy;ny <= 2000000;ny += lowbit(ny))
{
c[nx][ny] += k;
}
}
return;
}
long long query(long long nowx, long long nowy)
{
long long ans = 0;
for (int nx = nowx;nx;nx -= lowbit(nx))
{
for (int ny = nowy;ny;ny -= lowbit(ny))
{
ans += c[nx][ny];
}
}
return ans;
}
int main()
{
cin >> n >> m;
for (int i = 1;i <= n;i++)
{
cin >> y;
x = i;
update(x, y, 1);
}
for (int i = 1;i <= m;i++)
{
cin >> x1 >> x2 >> y1;
y2 = y1;
cout << query(x2, y2) - query(x1 - 1, y1) << "\n";
}
return 0;
}