//#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
//#pragma GCC optimize("O3")
//#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef long double ld;
#define migmig ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define pb push_back
#define F first
#define S second
#define SZ(x) ll((x).size())
#define all(x) (x).begin(), (x).end()
#define deb(x) cerr << #x << " = " << x << '\n'
#define dokme(x) { cout << x << endl; return 0; }
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
const int maxn = 1e6 + 10;
const int inf = 1e9;
const int LOG = 30;
const int mod = 1e9 + 7;
const int sq = 450;
//#define mid ((l + r) / 2)
#define lc (id * 2)
#define rc (lc + 1)
int n, q, f[maxn];
int get(int t, int x) {
int l = -1, r = n + 1;
while (r - l > 1) {
int mid = (l + r) / 2;
if ((t / f[mid]) * f[mid] - mid >= x)
l = mid;
else
r = mid;
}
return l;
}
signed main() {
migmig;
f[0] = 1;
cin >> n >> q;
for (int i = 1; i <= n; i++) {
int D; cin >> D;
int x = (D + f[i - 1] - 1) / f[i - 1];
f[i] = f[i - 1] * x;
}
while (q--) {
int t, l, r;
cin >> t >> l >> r;
cout << get(t, l) - get(t, r + 1) << '\n';
}
}