import sys def minimumZooNumbers(m, n, t, s, d): sol = [-1]*n def valid(candidate): queue = [] for i in candidate: queue.append((s[i], 'I', t[i])) queue.append((d[i], 'D', t[i])) queue.sort() van = {'E': 0, 'D': 0, 'C': 0, 'M': 0} for i in range(len(queue)): _, action, typet = queue[i] if action == 'I': if van[typet] == 0: if typet == 'D' and (van['E'] > 0 or van['C'] > 0): return False if typet == 'C' and (van['D'] > 0 or van['M'] > 0): return False if typet == 'M' and (van['C'] > 0 or van['E'] > 0): return False if typet == 'E' and (van['M'] > 0 or van['D'] > 0): return False van[typet] += 1 else: van[typet] -= 1 return True def lastzoo(candidate): msol = 0 for can in candidate: msol = max(msol, d[can]) return msol def solve(num, curr, ts, s): if num == curr: if valid(ts): sol[num-1] = lastzoo(ts) if sol[num-1] == -1 else min(sol[num-1], lastzoo(ts)) return for i in range(s, n): solve(num, curr+1, ts+[i], i+1) for i in range(n): solve(i+1, 0, [], 0) if sol[i] == -1: break return sol if __name__ == "__main__": cases = int(input().strip()) for a0 in range(cases): m, n = input().strip().split(' ') m, n = [int(m), int(n)] t = input().strip().split(' ') s = list(map(int, input().strip().split(' '))) d = list(map(int, input().strip().split(' '))) result = minimumZooNumbers(m, n, t, s, d) print (" ".join(map(str, result)))