#!/bin/python import sys from copy import deepcopy def minimumZooNumbers(m, n, t, s, d): gg = [[{}, {}] for _ in xrange(m+1)] for i in xrange(n): if d[i] < s[i]: continue if t[i] not in gg[s[i]][0]: gg[s[i]][0][t[i]] = {i: True} else: gg[s[i]][0][t[i]][i] = True if t[i] not in gg[d[i]][1]: gg[d[i]][1][t[i]] = {i: True} else: gg[d[i]][1][t[i]][i] = True min_zoos = [-1 for _ in xrange(n)] # coord, droppedsofar, holding now dict q = [[1, 0, {}]] types = ['E', 'D', 'C', 'M'] dp = {} while len(q) > 0: coord, droppedsofar, holding = q.pop(0) kk = str(coord) + '-' + str(droppedsofar) + '-' + str(holding) if kk in dp: continue dp[kk] = True if coord >= m+1: continue if len(gg[coord][0]) == 0 and len(gg[coord][1]) == 0: q.append([coord+1, droppedsofar, holding]) # drop first deleted = [] for tt in types: if tt in holding and tt in gg[coord][1]: for ind in holding[tt]: if ind in gg[coord][1][tt]: #print '--', coord, droppedsofar if min_zoos[droppedsofar] == -1 or min_zoos[droppedsofar] > coord: #print coord min_zoos[droppedsofar] = coord droppedsofar += 1 deleted.append((tt, ind)) #print coord, droppedsofar, deleted, holding, min_zoos for tt, ind in deleted: del holding[tt][ind] ks = holding.keys() for k in ks: if len(holding[k]) == 0: del holding[k] # add if possible h1 = deepcopy(holding) if 'E' in holding or 'C' in holding or len(holding) == 0: if 'E' in gg[coord][0]: if 'E' not in h1: h1['E'] = {} for animal in gg[coord][0]['E']: h1['E'][animal] = True if 'C' in gg[coord][0]: if 'C' not in h1: h1['C'] = {} for animal in gg[coord][0]['C']: h1['C'][animal] = True q.append([coord+1, droppedsofar, h1]) # add if possible h2 = deepcopy(holding) if 'D' in holding or 'M' in holding or len(holding) == 0: if 'D' in gg[coord][0]: if 'D' not in h2: h2['D'] = {} for animal in gg[coord][0]['D']: h2['D'][animal] = True if 'M' in gg[coord][0]: if 'M' not in h2: h2['M'] = {} for animal in gg[coord][0]['M']: h2['M'][animal] = True q.append([coord+1, droppedsofar, h2]) return min_zoos if __name__ == "__main__": cases = int(raw_input().strip()) for a0 in xrange(cases): m, n = map(int, raw_input().strip().split(' ')) t = raw_input().strip().split(' ') s = map(int, raw_input().strip().split(' ')) d = map(int, raw_input().strip().split(' ')) result = minimumZooNumbers(m, n, t, s, d) print " ".join(map(str, result))