import sys
input = sys.stdin.readline
inf = float('inf')
def getInt():
return int(input())
def getStr():
return input().strip()
def getList(split=True):
s = getStr()
if split:
s = s.split()
return list(map(int, s))
t = getInt()
def solve():
n, m = getList()
a = getList()
q = getList()
from itertools import accumulate
p = list(accumulate(a))
gain = list(accumulate(p, max))
from bisect import bisect_left, bisect
for i in q:
if i <= gain[-1]:
it = bisect_left(gain, i)
print(it, end=" ")
elif p[-1] <= 0:
print(-1, end=" ")
else:
k = (i-gain[-1] + p[-1]-1) // (p[-1])
i -= p[-1]*k
res = n * k
if i:
res += bisect_left(gain, i)+1
print(res-1, end=" ")
print()
for _ in range(t):
solve()
1574A - Regular Bracket Sequences | 1574B - Combinatorics Homework |
1567A - Domino Disaster | 1593A - Elections |
1607A - Linear Keyboard | EQUALCOIN Equal Coins |
XOREQN Xor Equation | MAKEPAL Weird Palindrome Making |
HILLSEQ Hill Sequence | MAXBRIDGE Maximise the bridges |
WLDRPL Wildcard Replacement | 1221. Split a String in Balanced Strings |
1002. Find Common Characters | 1602A - Two Subsequences |
1555A - PizzaForces | 1607B - Odd Grasshopper |
1084A - The Fair Nut and Elevator | 1440B - Sum of Medians |
1032A - Kitchen Utensils | 1501B - Napoleon Cake |
1584B - Coloring Rectangles | 1562B - Scenes From a Memory |
1521A - Nastia and Nearly Good Numbers | 208. Implement Trie |
1605B - Reverse Sort | 1607C - Minimum Extraction |
1604B - XOR Specia-LIS-t | 1606B - Update Files |
1598B - Groups | 1602B - Divine Array |