#include <iostream>
#include <vector>
using namespace std;
vector<int> Nw = {0};
int d[1<<19], cnt[1<<19];
void Add(int &ans, int l1, int r1, int l2, int r2){
ans += max(0, min(r1, r2) - max(l1, l2) + 1);
}
int main(){
int n, q;
cin>>n>>q;
d[0] = 1;
for (int i=1;i<=n;i++){
cin>>d[i];
if (d[i] > d[i-1]){
Nw.push_back(i);
d[i] = ((d[i] + d[i-1] - 1) / d[i-1]) * d[i-1];
}
else
d[i] = d[i-1], cnt[Nw.back()]++;
}
for (int i=1;i<=q;i++){
int t, l, r, ans = 0;
cin>>t>>l>>r;
for (int j : Nw){
int L = t - (t % d[j]) - j;
Add(ans, l, r, L - cnt[j], L);
}
cout<<ans<<'\n';
}
}