#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int maxn = 1e6 + 5;
const long long NEG = -(1LL << 60);
struct node {
long long best; // maximum a[i] + a[j] with i < j and a[i] > a[j]
vector<long long> arr; // sorted values in this segment
node() {
best = NEG;
}
node(long long b, vector<long long> ar) : best(b), arr(move(ar)) {}
} st[4 * maxn + 5];
node comb(const node &a, const node &b) {
if (a.arr.empty()) return b;
if (b.arr.empty()) return a;
long long best = max(a.best, b.best);
// cross inversion pairs: left value from a, right value from b
long long cross = NEG;
int j = 0, m = (int)b.arr.size();
for (long long x : a.arr) {
while (j < m && b.arr[j] < x) j++;
if (j > 0) {
cross = max(cross, x + b.arr[j - 1]);
}
}
best = max(best, cross);
// merge sorted arrays
vector<long long> merged;
merged.reserve(a.arr.size() + b.arr.size());
int i = 0;
j = 0;
while (i < (int)a.arr.size() && j < (int)b.arr.size()) {
if (a.arr[i] <= b.arr[j]) merged.push_back(a.arr[i++]);
else merged.push_back(b.arr[j++]);
}
while (i < (int)a.arr.size()) merged.push_back(a.arr[i++]);
while (j < (int)b.arr.size()) merged.push_back(b.arr[j++]);
return node(best, move(merged));
}
void build(int id, int l, int r, vector<long long> &a) {
if (l == r) {
st[id] = node(NEG, vector<long long>{a[l]});
return;
}
int mid = (l + r) / 2;
build(id * 2, l, mid, a);
build(id * 2 + 1, mid + 1, r, a);
st[id] = comb(st[id * 2], st[id * 2 + 1]);
}
node get(int id, int l, int r, int ul, int ur) {
if (l > ur || r < ul) return node(NEG, vector<long long>());
if (ul <= l && r <= ur) return st[id];
int mid = (l + r) / 2;
return comb(get(id * 2, l, mid, ul, ur),
get(id * 2 + 1, mid + 1, r, ul, ur));
}
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n, q;
cin >> n >> q;
vector<long long> bk(n + 1);
for (int i = 1; i <= n; i++) cin >> bk[i];
build(1, 1, n, bk);
while (q--) {
int u, v;
long long k;
cin >> u >> v >> k;
node ans = get(1, 1, n, u, v);
if (ans.best > k) cout << 1 << endl;
else cout << 0 << endl;
}
}