#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, m;
int r[10000005];
int d[10000005];
struct ding {
int begins, ends;
int day;
} t[10000005];
bool check(int mid) {
memset(d, 0, sizeof(d));
for (int i = 1; i <= mid; i++) {
d[t[i].begins] += t[i].day;
d[t[i].ends + 1] -= t[i].day;
}
for (int i = 2; i <= n; i++) {
d[i] += d[i - 1];
if (d[i] > r[i]) return true;
}
return false;
}
signed main() {
cin >> n >> m;
for (int i = 1; i <= n; i++)cin >> r[i];
for (int i = 1; i <= m; i++)cin >> t[i].day >> t[i].begins >> t[i].ends;
int l = 1, r = m;
while (l < r) {
int mid = (l + r) / 2;
if (check(mid)) r = mid;
else l = mid + 1;
}
if (l == m + 1)cout << "0";
else cout << "-1" << endl << l;
}