#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
****************************************************************/