#include<stdio.h>
#include<string.h>
#define N 1000005
int room[N],d[N],s[N],t[N],sum[N];
long long a[N];
int n,m;
void init()
{
int i;
scanf("%d%d",&n,&m);
for ( i=1; i<=n; i++) scanf("%d",&room[i]);
for ( i=1; i<=m; i++) scanf("%d%d%d",&d[i],&s[i],&t[i]);
}
int judge(int ad)
{
memset(a,0,sizeof(a));
int i;
for ( i=1; i<=ad; i++)
{
a[s[i]]+=d[i];
a[t[i]+1]-=d[i];
}
long long num = 0;
for (i=1; i<=n; i++)
{
num+=a[i];
if (num>room[i])
return 0;
}
return 1;
}
void work()
{
int l=0,r=m+1;
while (l+1<r)
{
int mid=(l+r)/2;
if (judge(mid))
l=mid;
else
r=mid;
}
if (l==m) printf("0\n");
else printf("-1\n%d\n",l+1);
}
int main()
{
init();
work();
return 0;
}
/**************************************************************
Problem: 2319
User: admin
Language: C
Result: Accepted
Time:4070 ms
Memory:28488 kb
****************************************************************/