#include<iostream>
#include<cstring>
using namespace std;
int n,m;
int cfs[1000001];
int d[1000001];
int l[1000001];
int r[1000001];
int a[1000001];
int cf[1000001];
int qzh[1000001];
bool check(int ans){
memset(cf,0,sizeof(cf));
for(int i=1;i<=ans;i++){
cf[l[i]]+=d[i];
cf[r[i]+1]-=d[i];
}
for(int i=1;i<=n;i++){
qzh[i]=qzh[i-1]+cf[i];
if(qzh[i]>cfs[i]) return 0;
}
return 1;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>cfs[i];
for(int i=1;i<=m;i++) cin>>d[i]>>l[i]>>r[i];
if(check(m)) cout<<0;
else{
int L=0,R=m;
while(L<R){
int mid=(L+R)/2;
if(check(mid)) L=mid+1;
else R=mid;
}
cout<<-1<<endl<<L;
}
return 0;
}
我甚至去对比了一下第一篇题解,实在是找不出啊