#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define IO ios::sync_with_stdio(false); cin.tie(0);
struct Node {
ll mx1, mx2;
};
Node merge(Node a, Node b) {
vector<ll> v = {a.mx1, a.mx2, b.mx1, b.mx2};
sort(v.begin(), v.end(), greater<ll>());
return {v[0], v[1]};
}
const int MAXN = 1e6 + 5;
Node seg[4 * MAXN];
ll a[MAXN];
void build(int idx, int l, int r) {
if (l == r) {
seg[idx] = {a[l], 0};
return;
}
int mid = (l + r) / 2;
build(idx*2, l, mid);
build(idx*2+1, mid+1, r);
seg[idx] = merge(seg[idx*2], seg[idx*2+1]);
}
Node query(int idx, int l, int r, int ql, int qr) {
if (qr < l || r < ql) return {0, 0};
if (ql <= l && r <= qr) return seg[idx];
int mid = (l + r) / 2;
return merge(
query(idx*2, l, mid, ql, qr),
query(idx*2+1, mid+1, r, ql, qr)
);
}
int main() {
IO;
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; i++) cin >> a[i];
build(1, 1, n);
while (q--) {
int l, r;
ll k;
cin >> l >> r >> k;
Node res = query(1, 1, n, l, r);
if (res.mx1 + res.mx2 <= k) cout << 1 << '\n';
else cout << 0 << '\n';
}
}