#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=5e5+10;
int n,m,a[N],k,fl,fr;
struct ST{
int v,mi,ma;
}t[N<<2];
struct qp{
int ls,rs,L,R;
};
void pushup(int rt){
t[rt].v=t[rt<<1].v+t[rt<<1|1].v;
t[rt].mi=min(t[rt<<1].mi,t[rt<<1|1].mi);
t[rt].ma=max(t[rt<<1].ma,t[rt<<1|1].ma);
}
void build(int rt,int l,int r){
if(l==r){
t[rt]={a[l],a[l],a[l]};
return ;
}
int mid=l+r>>1;
build(rt<<1,l,mid);
build(rt<<1|1,mid+1,r);
pushup(rt);
}
qp qry(int rt,int l,int r){
if(fl<=l && r<=fr){
if(t[rt].ma<=k){
qp res={t[rt].v,0,r-l+1,0};
return res;
}
if(t[rt].mi>k){
qp res={0,t[rt].v,0,r-l+1};
return res;
}
}
int mid=l+r>>1;
qp res1={0,0,0,0},res2={0,0,0,0},res;
if(fl<=mid) res1=qry(rt<<1,l,mid);
if(mid<fr) res2=qry(rt<<1|1,mid+1,r);
res={res2.ls+res1.ls,res1.rs+res2.rs,res1.L+res2.L,res1.R+res2.R};
return res;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
build(1,1,n);
while(m--){
cin>>fl>>fr>>k;
qp ans=qry(1,1,n);
cout<<ans.rs-ans.ls+((2*k+ans.L-1)*ans.L-(2*k+2*fr-2*fl-ans.R+1)*ans.R)/2<<endl;
}
return 0;
}