#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define all(v) begin(v), end(v)
#define pi pair<int, int>
#define vi vector<int>
using namespace std;
const int N = 1e6+3;
int n, q, a[N], l[N];
int t[N*4];
int ql[N], qr[N], qk[N], qa[N];
void up(int u, int v, int id=1, int l=1, int r=n){
if(u < l || r < u) return ;
if(l == r){
t[id] = v;
return ;
}
int mid = (l+r)/2;
up(u, v, id*2, l, mid);
up(u, v, id*2+1, mid+1, r);
t[id] = max(t[id*2], t[id*2+1]);
return;
}
int get(int u, int v, int id=1, int l=1, int r=n){
if(v < l || r < u) return 0;
if(u <= l && r <= v) return t[id];
int mid = (l+r)/2;
return max(get(u, v, id*2, l, mid), get(u, v, id*2+1, mid+1, r));
}
vector<int> o[N], qo[N];
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
cin >> n >> q;
stack<int> s;
for(int i = 1; i <= n; i++){
cin >> a[i];
while(!s.empty() && a[s.top()] <= a[i]) s.pop();
if(!s.empty()) l[i] = s.top();
s.push(i);
o[l[i]].push_back(i);
}
for(int i = 1; i <= q; i++){
cin >> ql[i] >> qr[i] >> qk[i];
qo[ql[i]].push_back(i);
}
for(int i = n; i >= 1; i--){
for(auto x:o[i]){
up(x, a[i]+a[x]);
}
for(auto x:qo[i]){
if(get(i, qr[x]) <= qk[x]) qa[x] = 1;
}
}
for(int i = 1; i <= q; i++) cout << qa[i] << "\n";
return 0;
}