#include <bits/stdc++.h>
using namespace std;
int r[1000010], d[1000010], s[1000010], t[1000010], diff[1000010], need[1000010], n, m, ans = 0x7fffffff;
bool check(int mid) {
memset(diff, 0, sizeof(diff));
for (int i = 1; i <= mid; i++) {
diff[s[i]] += d[i];
diff[r[i] + 1] -= d[i];
}
for (int i = 1; i <= n; i++) {
need[i] = need[i - 1] + diff[i];
if (need[i] > r[i]) return 1;
}
return 0;
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> r[i];
for (int i = 1; i <= m; i++) cin >> d[i] >> s[i] >> t[i];
int left = 1, right = m;
int mid;
if (!check(m)) {
cout << 0;
return 0;
}
while (left <= right) {
mid = (left + right) / 2;
if (check(mid)) right = mid - 1;
else left = mid + 1;
}
cout << -1 << endl << right;
return 0;
}