from bisect import bisect_left
import math

def main():
    cases = int(input())
    ans_list = []
    for _ in range(cases):
        n, m = map(int, input().split(' '))
        a = list(map(int, input().split(' ')))
        x = list(map(int, input().split(' ')))

        sums = []
        cur = 0
        max_sum = float('-inf')
        for val in a:
            cur += val 
            sums.append(cur)
            max_sum = max(max_sum, cur)
        cycle_sum = sums[-1]

        sums = [(val, i) for i, val in enumerate(sums)] 
        sums.sort()

        sorted_sums, indices = [], []
        min_idx = float('inf')
        for (cur_sum, idx) in sums:
            sorted_sums.append(cur_sum)
        for (cur_sum, idx) in reversed(sums):
            min_idx = min(min_idx, idx)
            indices.append(min_idx)
        indices = indices[::-1]
        
        query_answers = []
        for q in x:
            if q <= max_sum:
                search_idx = bisect_left(sorted_sums, q)
                query_answers.append(indices[search_idx])
            elif cycle_sum <= 0:
                query_answers.append(-1)
            else:
                cycles_required = int(math.ceil((q-max_sum)/cycle_sum))
                search_idx = bisect_left(sorted_sums, q - cycles_required * cycle_sum)
                query_answers.append(indices[search_idx] + cycles_required * n)
        ans_list.append(' '.join(map(str, query_answers)))

    print('\n'.join(ans_list))

# region fastio
import os
import sys
from io import BytesIO, IOBase
BUFSIZE = 8192
 
class FastIO(IOBase):
    newlines = 0
 
    def __init__(self, file):
        self._fd = file.fileno()
        self.buffer = BytesIO()
        self.writable = "x" in file.mode or "r" not in file.mode
        self.write = self.buffer.write if self.writable else None
 
    def read(self):
        while True:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            if not b:
                break
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines = 0
        return self.buffer.read()
 
    def readline(self):
        while self.newlines == 0:
            b = os.read(self._fd, max(os.fstat(self._fd).st_size, BUFSIZE))
            self.newlines = b.count(b"\n") + (not b)
            ptr = self.buffer.tell()
            self.buffer.seek(0, 2), self.buffer.write(b), self.buffer.seek(ptr)
        self.newlines -= 1
        return self.buffer.readline()
 
    def flush(self):
        if self.writable:
            os.write(self._fd, self.buffer.getvalue())
            self.buffer.truncate(0), self.buffer.seek(0)
 
 
class IOWrapper(IOBase):
    def __init__(self, file):
        self.buffer = FastIO(file)
        self.flush = self.buffer.flush
        self.writable = self.buffer.writable
        self.write = lambda s: self.buffer.write(s.encode("ascii"))
        self.read = lambda: self.buffer.read().decode("ascii")
        self.readline = lambda: self.buffer.readline().decode("ascii")
 
 
sys.stdin, sys.stdout = IOWrapper(sys.stdin), IOWrapper(sys.stdout)
input = lambda: sys.stdin.readline().rstrip("\r\n")
 
# endregion
 
if __name__ == "__main__":
    main()