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 = [-1 for _ in range(n+m)] D = [-1 for _ in range(n+m)] for i in range(n): l = i if i+l < n: C[X[i]] = (l, A_[i+l+1]-A_[i-l]) rep = -1 for i in range(m): l = i r = m-1-i le = min(l, r) y = Y[i] if C[y] == -1: continue if C[y][0] <= le: re = C[y][0] rep = max(rep, C[y][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), f(A[::-1], B[::-1], X[::-1], Y[::-1]), f(B[::-1], A[::-1], Y[::-1], X[::-1])) for _ in range(int(input())): print(main())