#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N=1e6+9;
int a[N],c[N];
struct dd{
int d,s,t;
}p[N];
bool ck(int x){//x为订单顺序
memset(c,0,sizeof(c));
for(int i=1;i<=x;i++)
c[p[i].s]+=p[i].d,c[p[i].t+1]-=p[i].d;
for(int i=1;i<=n;i++){
c[i]+=c[i-1];
if(c[i]>a[i])return 0;
}
return 1;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=m;i++)cin>>p[i].d>>p[i].s>>p[i].t;
int l=0,r=m+1;
while(l+1!=r){
int mid=(l+r)>>1;
if(ck(mid))l=mid;
else r=mid;
}
if(r>m)cout<<0;
else cout<<r;
return 0;
}