defsolve(): n, m = map(int, input().split()) A = array("l", map(int, input().split()))
D = array("l", []) L = array("l", []) R = array("l", []) for _ inrange(m): d, l, r = map(int, input().split()) D.append(d) L.append(l - 1) R.append(r - 1)
diff = array("l", [0] * (n + 1))
defcheck(mid: int) -> bool: # 重置差分陣列 for i inrange(n + 1): diff[i] = 0 # 套用前 mid 個訂單的區間增加 for i inrange(mid): d, l, r = D[i], L[i], R[i] diff[l] += d diff[r + 1] -= d # 前綴和還原每日用量 for i inrange(1, n): diff[i] += diff[i - 1] # 檢查是否超出容量 returnall(diff[i] <= A[i] for i inrange(n))
left, right = 0, m while left <= right: mid = (left + right) // 2 if check(mid): left = mid + 1 else: right = mid - 1 # left 是第一個失敗的訂單編號(1-based) if left <= m: print(-1, left, sep="\n") else: print(0)