R=range J=lambda:list(map(int,input().split())) def b(l,r,f,c): if l>=r or f(l)>c:return l-1 while l>1 if f(m)>c:r=m else:l=m return l def f(t,y,c):return b(0,len(y),lambda j:t[0]+y[j][0],c) def g(t,c):return b(0,M,lambda j:t[0]+Z[j][0],c) for _ in R(sum(J())): N,M,K,P=J();T=J();C=J();B=J();D=J();S=[0]+J();X,Y=[[[]for k in R(K+1)]for d in R(2)];Z=[[]for j in R(M)] for i in R(N):X[C[i]]+=[[T[i],i+1]] for j in R(M):Y[D[j]]+=[[B[j],j+1]];Z[j]=[B[j],D[j],j+1] for k in R(K+1):X[k].sort();Y[k].sort(); Z.sort();c=-b(-11**9,1,lambda c:-sum(sum(f(t,y,s-c)-f(t,y,-c)+g(t,-c)+1for t in x)for x,y,s in zip(X,Y,S)),-P) for k,(x,y,s)in enumerate(zip(X,Y,S)): for t in x: j=f(t,y,c+s) if 0<=j and t[0]+y[j][0]-s==c:a=t[1],y[j][1] for d in R(2): j=g(t,c-d)+d if 0<=j