#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
unsigned long long a[maxn];
struct jk{
unsigned long long d,s,t;
}b[maxn];
unsigned long long diff[maxn];
unsigned long long n,m;
bool cheak(int mid){
for(int i=1;i<=m;i++){
diff[i]=0;
}
for(int i=1;i<=mid;i++){
diff[b[i].s]+=b[i].d;
diff[b[i].t+1]-=b[i].d;
}
int sum=0;
for(int i=1;i<=n;i++){
sum+=diff[i];
if(sum>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>>b[i].d>>b[i].s>>b[i].t;
}
if(cheak(m)){
cout<<"0";
return 0;
}
int l=0,r=m+1,mid;
while(l<r){
mid=(l+r)>>1;
if(cheak(mid)){
l=mid+1;
}
else{
r=mid;
}
}
cout<<"-1"<<endl;
cout<<l;
return 0;
}