from bisect import bisect_left as bs def main(): n, m = list(map(int, input().split())) A = list(map(int, input().split())) B = list(map(int, input().split())) X = list(map(lambda x: int(x)-1, input().split())) Y = list(map(lambda x: int(x)-1, input().split())) def f(A, B, X, Y): n = len(A) m = len(B) A_ = [0] * (n+1) B_ = [0] * (m+1) for i in range(n): A_[i+1] = A_[i] + A[i] for i in range(m): B_[i+1] = B_[i] + B[i] C = [[] for _ in range(n+m)] D = [[] for _ in range(n+m)] for i in range(n): l = i r = n-1-i le = min(l, r) C[X[i]].append((le, A_[i+le+1]-A_[i-le])) for i in range(n+m): C[i].sort() for le, x in C[i]: if not D[i] or D[i][-1][1] < x: D[i].append((le, x)) rep = -1 for i in range(m): l = i r = m-1-i le = min(l, r) y = Y[i] if D[y] and D[y][0][0] <= le: idx = bs(D[y], (le+1, -1))-1 re = D[y][idx][0] rep = max(rep, D[y][idx][1]+B_[i+re+1]-B_[i-re]) return rep #print(f(A, B, X, Y), f(B, A, Y, X)) return max(f(A, B, X, Y), f(B, A, Y, X)) for _ in range(int(input())): print(main())