import io, os, sys, math, bisect, collections, string
input = lambda : sys.stdin.readline().strip()
def solve():
(n,m) = map(int, input().split())
a = list(map(int, input().split()))
trainings_by_tasks = [[] for _ in range(n)]
for i in range(m):
(e,t,p) = map(int, input().split())
e -= 1
trainings_by_tasks[e].append((t,p,i+1))
task_times = []
for trainings in trainings_by_tasks:
dp = [(None,[]) for i in range(101)]
dp[0] = (0,[])
for (t,p,training_index) in trainings:
for i in range(100,-1,-1):
time = dp[i][0]
if time is None:
continue
next = min(i + p,100)
next_time = time + t
if dp[next][0] is None or next_time < dp[next][0]:
dp[next] = (next_time, dp[i][1] + [training_index])
if dp[100][0] is None:
print(-1)
return
task_times.append((dp[100][0], dp[100][1]))
curr_time = 0
ans = 0
for (i,(time,sequence)) in enumerate(task_times):
curr_time += time
deadline = a[i]
ans += len(sequence)
if curr_time > deadline:
print(-1)
return
print(ans)
for time,sequence in task_times:
print(*sequence,end=" ")
print()
for t in range(int(input())):
solve()
1313. Decompress Run-Length Encoded List | 1281. Subtract the Product and Sum of Digits of an Integer |
1342. Number of Steps to Reduce a Number to Zero | 1528. Shuffle String |
1365. How Many Numbers Are Smaller Than the Current Number | 771. Jewels and Stones |
1512. Number of Good Pairs | 672. Richest Customer Wealth |
1470. Shuffle the Array | 1431. Kids With the Greatest Number of Candies |
1480. Running Sum of 1d Array | 682. Baseball Game |
496. Next Greater Element I | 232. Implement Queue using Stacks |
844. Backspace String Compare | 20. Valid Parentheses |
746. Min Cost Climbing Stairs | 392. Is Subsequence |
70. Climbing Stairs | 53. Maximum Subarray |
1527A. And Then There Were K | 1689. Partitioning Into Minimum Number Of Deci-Binary Numbers |
318. Maximum Product of Word Lengths | 448. Find All Numbers Disappeared in an Array |
1155. Number of Dice Rolls With Target Sum | 415. Add Strings |
22. Generate Parentheses | 13. Roman to Integer |
2. Add Two Numbers | 515. Find Largest Value in Each Tree Row |