#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
typedef long long LL;
LL a[N], w[N], L[N], R[N], D[N], s[N];
int n, m;
int check(int mid)
{
for (int i = 1; i <= n; i ++) w[i] = a[i] - a[i - 1];
for (int i = 1; i <= mid; i ++)
{
w[L[i]] -= D[i];
w[R[i] + 1] += D[i];
}
for (int i = 1; i <= n; i ++)
{
w[i] += w[i - 1];
if (w[i] < 0) return 1;
}
return 0;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i ++)
{
cin >> a[i];
s[i] = a[i] - a[i - 1];
}
for (int i = 1; i <= m; i ++)
{
cin >> D[i] >> L[i] >> R[i];
s[L[i]] -= D[i];
s[R[i] + 1] += D[i];
}
int x = 1;
for (int i = 1; i <= n; i ++)
{
s[i] += s[i - 1];
if (s[i] < 0)
{
x = 0;
break;
}
}
if (x) puts("0");
else
{
puts("-1");
int l = 1, r = m;
while (l < r)
{
int mid = l + r >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
}
cout << r << '\n';
}
return 0;
}