pragma GCC optimize(3)
pragma GCC target("avx")
pragma GCC optimize("Ofast")
pragma GCC optimize("inline")
pragma GCC optimize("-fgcse")
pragma GCC optimize("-fgcse-lm")
pragma GCC optimize("-fipa-sra")
pragma GCC optimize("-ftree-pre")
pragma GCC optimize("-ftree-vrp")
pragma GCC optimize("-fpeephole2")
pragma GCC optimize("-ffast-math")
pragma GCC optimize("-fsched-spec")
pragma GCC optimize("unroll-loops")
pragma GCC optimize("-falign-jumps")
pragma GCC optimize("-falign-loops")
pragma GCC optimize("-falign-labels")
pragma GCC optimize("-fdevirtualize")
pragma GCC optimize("-fcaller-saves")
pragma GCC optimize("-fcrossjumping")
pragma GCC optimize("-fthread-jumps")
pragma GCC optimize("-funroll-loops")
pragma GCC optimize("-fwhole-program")
pragma GCC optimize("-freorder-blocks")
pragma GCC optimize("-fschedule-insns")
pragma GCC optimize("inline-functions")
pragma GCC optimize("-ftree-tail-merge")
pragma GCC optimize("-fschedule-insns2")
pragma GCC optimize("-fstrict-aliasing")
pragma GCC optimize("-fstrict-overflow")
pragma GCC optimize("-falign-functions")
pragma GCC optimize("-fcse-skip-blocks")
pragma GCC optimize("-fcse-follow-jumps")
pragma GCC optimize("-fsched-interblock")
pragma GCC optimize("-fpartial-inlining")
pragma GCC optimize("no-stack-protector")
pragma GCC optimize("-freorder-functions")
pragma GCC optimize("-findirect-inlining")
pragma GCC optimize("-fhoist-adjacent-loads")
pragma GCC optimize("-frerun-cse-after-loop")
pragma GCC optimize("inline-small-functions")
pragma GCC optimize("-finline-small-functions")
pragma GCC optimize("-ftree-switch-conversion")
pragma GCC optimize("-foptimize-sibling-calls")
pragma GCC optimize("-fexpensive-optimizations")
pragma GCC optimize("-funsafe-loop-optimizations")
pragma GCC optimize("inline-functions-called-once")
pragma GCC optimize("-fdelete-null-pointer-checks")
pragma GCC optimize(2)
#include<bits/stdc++.h>
using namespace std;
priority_queue<int,vector<int>,less<int> >q;
const int N=1919810;
const int M=514;
int n,m,t,ans,a[N],f[N],c[M][M],d[M][M];
inline int read()
{
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') f=-1;
ch=getchar();
}
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
return x*f;
}
void write(int x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
return;
}
signed main()
{
freopen("kind.in","r",stdin);
freopen("kind.out","w",stdout);
n=read(),m=read();
for(register int i=1;i<=n;i++) a[i]=read();
for(register int i=1,j,k,l;i<=m;i++)
{
ans=0;
j=read(),k=read(),l=read();
for(register int p=j;p<=k;p++) if(a[p]==l) ans++;
write(ans);
printf("\n");
}
}