//订单越多,越不能满足,二分。
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int n=1e6+11;
int a,b,c[n],d[n],t[n],w[n],v[n];
int check(int x)
{
for(int i=1;i<=a;i++)
{
v[i]=0;
}
for(int i=1;i<=x;i++)
{
v[t[i]]+=d[i];
v[w[i]+1]-=d[i];
}
int f=0;
for(int i=1;i<=a;i++)
{
v[i]+=v[i-1];
if(v[i]>c[i])
{
return 0;
}
}
return 1;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>a>>b;
for(int i=1;i<=a;i++)
{
cin>>c[i];
}
for(int i=1;i<=b;i++)
{
cin>>d[i]>>t[i]>>w[i];
}
int l=1,r=b,an=b+1;
while(r>=l)
{
int mid=(l+r)/2;
//cout<<l<<" "<<r<<endl;
if(check(mid))
{
l=mid+1;
}
else
{
r=mid-1;
an=mid;
}
}
if(an==b+1)
{
cout<<"0"<<endl;
}
else
{
cout<<"-1"<<endl;
cout<<an<<endl;
}
return 0;
}