#include<bits/stdc++.h>
using namespace std;
int n,m;
long long rest[1000010];
long long l[1000010],r[1000010],d[100010];
long long x[1000010];
long long qzh[1000010];
bool check(long long mid){
memset(x,0,sizeof(x));
for(int i=1;i<=mid;i++){
x[l[i]]+=d[i];
x[r[i]+1]-=d[i];
}
for(int i=1;i<=n;i++){
qzh[i]=qzh[i-1]+x[i];
if(qzh[i]>rest[i]){
return 0;
}
}
return 1;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>rest[i];
}
for(int i=1;i<=m;i++){
cin>>d[i]>>l[i]>>r[i];
}
long long l2=1,r2=m;
if(check(m)){
cout<<0;
return 0;
}
while(l2<r2){
long long mid=(l2+r2)/2;
if(check(mid)){
l2=mid+1;
}else{
r2=mid;
}
}
cout<<-1<<endl<<l2;
return 0;
}
代码如上,WA16-20