#二分 + 差分
n,m = map(int,input().split())
dayshave = list(map(int, input().split()))
order = [] #订单
t = m
while t:
order.append(list(map(int, input().split())))
t -= 1
'''
#暴力
ans = 0
flag = False
for i in range(m):
for j in range(order[i][1]- 1 , order[i][2]):
dayshave[j] -= order[i][0]
if dayshave[j] < 0 :
ans = i
flag = True
break
if flag:
break
if flag:
print(-1)
print(ans + 1)
else:
print(0)
'''
def check(mid):
cf = chafen[:]
for d , s , t in order[ : mid + 1]:
cf[s-1] -= d #下标要-1
if t < n:
cf[t - 1 + 1] += d
res = 0 #前缀和还原数组
for i in cf:
res += i
if res < 0 :
return False
return True
#差分数组
chafen = [dayshave[0]]
for i in range(1,n):
chafen.append(dayshave[i] - dayshave[i - 1])
def main():
if check(m-1):
#最后一个满足
print(0)
return
#肯定有不满足
left = 0
right = m
while left < right:
mid = (left + right ) // 2
if check(mid):
left = mid + 1
else:
right = mid #有可能是自己
print(-1)
print(left + 1)
main()
超时呢