#include<iostream>
#include<cstring>
using namespace std;
int n, m, r[1000005], a[1000005], d[1000005], s[1000005], t[1000005], p[1000005];
bool chk(int x)
{
memset(a, 0, sizeof(a));
memset(d, 0, sizeof(d));
for(int i = 1; i <= x; i++)
{
d[s[i]] += p[i];
d[t[i]+1] -= p[i];
}
for(int i = 1; i <= n; i++)
a[i] = a[i-1] + d[i];
for(int i = 1; i <= n; i++)
if(a[i] > r[i]) return true;
return false;
}
int main()
{
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> r[i];
for(int i = 1; i <= m; i++) cin >> p[i] >> s[i] >> t[i];
int low = 1, high = m + 1, ans = m + 1;
while(low <= high)
{
int mid = (low + high) / 2;
if(chk(mid) == true)
{
ans = mid;
high = mid - 1;
}
else low = mid + 1;
}
if(ans == m + 1) cout << 0 << endl;
else cout << -1 << endl << ans << endl;
return 0;
}