# Enter your code here. Read input from STDIN. Print output to STDOUT from collections import defaultdict o = "CDEM" for _ in range(int(raw_input())): z,a = map(int, raw_input().split()) t = raw_input().split() f = map(int, raw_input().split()) d = map(int, raw_input().split()) ans = [-1 for _ in range(z)] start = {} final = {} for i in range(1,a+1): if f[i-1] not in start: start[f[i-1]] = [0,0,0,0] if d[i-1] not in final: final[d[i-1]] = [0,0,0,0] start[f[i-1]][o.index(t[i-1])] += 1 final[d[i-1]][o.index(t[i-1])] += 1 #print start, final p = [(0,0,0,0)] for i in range(1,z+1): p_ = set() p_.add((0,0,0,0)) # Unload tmp = 0 for j in p: tt = 0 if i in final: pp,qq = list(j[:]), final[i] #print "unload",pp,qq for l in range(4): if qq[l] > 0 and pp[l] > 0: tt += min(qq[l],pp[l]) pp[l] -= min(qq[l],pp[l]) tmp = max(tt, tmp) p_.add(tuple(pp)) else: p_.add(j) #print i,"unload max", tmp if tmp: ans[i-1] = tmp # Load p = set() #print 'a',p_ for j in p_: if i in start: qq = start[i] #print qq if j[1] == 0 and j[3] == 0: pp = list(j[:]) pp[0] += qq[0] pp[2] += qq[2] p.add(tuple(pp)) if j[0] == 0 and j[3] == 0: pp = list(j[:]) pp[1] += qq[1] pp[3] += qq[3] p.add(tuple(pp)) else: p.add(j) #print i,p #print ans output = [-1 for _ in range(a)] index = 0 for i in range(z): while ans[i] > 0: output[index] = i+1 index += 1 ans[i] -= 1 print " ".join(str(x) for x in output)