import sys input = sys.stdin.readline from bisect import bisect Q=int(input()) for tests in range(Q): N,M,K,P=list(map(int,input().split())) T=list(map(int,input().split())) C=list(map(int,input().split())) B=list(map(int,input().split())) D=list(map(int,input().split())) S=list(map(int,input().split())) SB=sorted(B) SC=[[] for i in range(N+M+1)] for i in range(M): b,d=B[i],D[i] SC[d].append(b) for i in range(M+1): SC[i].sort() OK=3*10**9 NG=0 while OK>NG+1: mid=(OK+NG)//2 count=0 for i in range(N): t=T[i] c=C[i] count+=bisect(SB,mid-t) count+=bisect(SC[c],mid+S[c-1]-t) count-=bisect(SC[c],mid-t) if count>=P: OK=mid else: NG=mid #print(OK) ind=-1 for i in range(N): t=T[i] c=C[i] k=bisect(SC[c],mid+S[c-1]-t) if k>=1: if SC[c][k-1]==mid+S[c-1]-t: ind=i break if ind!=-1: t,c=T[ind],C[ind] for i in range(M): b,d=B[u],D[i] if c==d: if t+b-S[c-1]==OK: ind2=i else: if t+b==OK: ind2=i print(ind+1,ind2+1) continue ind=-1 for i in range(N): t=T[i] c=C[i] k=bisect(SB,OK-t) l=bisect(SC[c],OK+S[c-1]-t) flag1=0 flag2=0 if k>=1: if SB[k-1]==OK-t: flag1=1 if l>=1: if SC[c][l-1]==OK+S[c-1]-t: flag2=1 #print(i,flag1,flag2) if flag1==1 and flag2==0: ind=i break #print("!",ind) if ind!=-1: t,c=T[ind],C[ind] for i in range(M): b,d=B[i],D[i] if c==d: if t+b-S[c-1]==OK: ind2=i else: if t+b==OK: ind2=i print(ind+1,ind2+1) continue