#include<iostream>
#include<string.h>
using namespace std;
bool Cheak(long long* day, long long* dt, int* start, int* end, long long* arr,int mid,int N,int M)
{
memset(dt, 0, sizeof(long long) * (N + 1));
for (int i = 1; i <= mid; i++)
{
dt[start[i]] += day[i];
dt[end[i] + 1] -= day[i];
}
if (day[1] < dt[1])return true;
for (int i = 2; i <= N; i++)
{
dt[i] += dt[i - 1];
if (dt[i] > day[i])return true;
}
return false;
}
int main()
{
int N;
int M;
cin >> N >> M;
long long* arr = new long long[N + 1];
for (int i = 1; i <= N; i++)cin >> arr[i];
long long* day = new long long[M + 1];
int* start = new int[M + 1];
int* end = new int[M + 1];
long long* dt = new long long[N + 1];
for (int i = 1; i <= M; i++)cin >> day[i] >> start[i] >> end[i];
int l = 1;
int r = M;
int mid;
while (l <=r)
{
mid = (r + l) / 2;
if (Cheak(day, dt, start, end, arr, mid,N,M))
{
r = mid-1;
}
else
{
l = mid + 1;
}
}
if (M!=r)
{
cout << "-1" << endl;
cout <<r+1<< endl;
}
else cout << "0" << endl;
return 0;
}