aggro = { 'C': 'D', 'D': 'E', 'E': 'M', 'M': 'C', } def valid(trip, animals): for i in range(len(trip)): da,sa,ta = animals[trip[i]] for j in range(i + 1, len(trip)): db,sb,tb = animals[trip[j]] overlap = max(sa, sb) < min(da, db) conflict = aggro[ta] == tb or aggro[tb] == ta if overlap and conflict: return False return True def minimumZooNumbers(m, n, t, s, d): animals = list(sorted(zip(d, s, t))) # max(d), [animal index] trips = list((a[0], (i,)) for i,a in enumerate(animals)) yield trips[0][0] for row in range(2, n + 1): trx = [] for d,idxs in trips: for a in range(idxs[-1] + 1, n): xx = (*idxs, a) if valid(xx, animals): trx.append((max(d, animals[a][0]), xx)) if trx: yield sorted(trx)[0][0] else: yield -1 trips = trx 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)))