借教室
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
long long s[N], d[N], t[N], r[N];
long long b[N];
int n, m;
void insert(int l, int r, int c){
b[l] += c;
b[r+1] -= c;
}
bool check(int mid){
memcpy(b, r, sizeof r);
for(int i = 1; i <= mid; ++i){
b[s[i]] -= d[i];
b[t[i]+1] += d[i];
}
long long ans = 0;
for(int i = 1; i <= n; ++i){
ans += b[i];
if(ans < 0) return false;
}
return true;
}
signed main(){
cin >> n >> m;
for(int i = 1; i <= n; ++i) cin >> r[i];
//计算差分数组
for(int i = n; i >= 1; --i) r[i] = r[i] -= r[i-1];
for(int i = 1; i <= m; ++i) cin >> d[i] >> s[i] >> t[i];
if(check(m)){
cout << 0 << endl;
return 0;
}
int l = 1, r = m;
while(l < r){
int mid = l + r >> 1;
if(check(mid)) l = mid + 1;
else r = mid;
}
cout << l << endl;
return 0;
}