#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1000006;
struct tick{int st,en,ne;};
tick t[N];int m;int a[N],n,d[N];
bool check(const int &p){
    memset(d,0,sizeof(d));int i;
    for(i=1;i<n;i++)d[i+1]=a[i+1]-a[i];d[1]=a[1];
    for(i=1;i<=p;i++)d[t[i].st]-=t[i].ne,d[t[i].en+1]+=t[i].ne;
    for(i=1;i<=n;i++){d[i]+=d[i-1];if(d[i]<0)return false;}
    return true;
}
int main(){
    scanf("%d%d",&n,&m);
    int i,le,ri;
    for(i=1;i<=n;i++)scanf("%d",a+i);
    for(i=1;i<=m;i++)scanf("%d%d%d",&t[i].ne,&t[i].st,&t[i].en);
    le=1,ri=m;
    if(check(m)){printf("0\n");return 0;}
    while(le<ri)
        if(check((le+ri)>>1))le=((le+ri)>>1)+1;
        else ri=((le+ri)>>1);
    printf("-1\n%d\n",le);
    return 0;
}

/**************************************************************
	Problem: 2319
	User: admin
	Language: C++
	Result: Accepted
	Time:3359 ms
	Memory:20676 kb
****************************************************************/