#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std ;
const int MN=1000006 ;
long long a[MN],num[MN],x[MN],y[MN],sum,ans,s[MN],n,m;
long long gt(){
char c=getchar();
long long x=0 ,f=1 ;
while (c<'0' ||c>'9' ){if (c=='-' )f=-1 ; c=getchar();}
while (c>='0' &&c<='9' ){x=x*10 +c-'0' ; c=getchar();}
return x*f;
}
bool ck(int k){
memset (num,0 ,sizeof (num));
for (int i=1 ;i<=k;i++){
num[x[i]]+=s[i];
num[y[i]+1 ]-=s[i];
}
sum=0 ;
for (int i=1 ;i<=n;i++){
sum+=num[i];
if (sum>a[i])return 0 ;
}
return 1 ;
}
int main(){
cin >>n>>m;
for (int i=1 ;i<=n;i++)
{
a[i]=gt();
}
for (int i=1 ;i<=m;i++){
s[i]=gt();x[i]=gt();y[i]=gt();
}
int l=1 ,r=m,mid;
while (l<=r){
mid=(l+r)>>1 ;
if (ck(mid)){
l=mid+1 ;
}
else {
ans=mid;
r=mid-1 ;
}
}
if (!ans)cout <<0 ;
else cout <<-1 <<endl<<ans;
return 0 ;
}