def max_score(a, b): if a[0] != b[0]: return max(a, b) else: return min(a, b) def solve(): N, K = map(int, input().split()) A = list(map(int, input().split())) B = list(map(int, input().split())) INF = 1 << 60 ODD = K % 2 EVEN = ODD ^ 1 H = K // 2 def alien_dp(cost): dpa = (0, 0) dpb = (-INF, 0) for i in range(N): ndpa = max_score((dpa[0] + A[i], dpa[1]), (dpb[0] + A[i] - cost * ODD, dpb[1] + ODD)) ndpb = max_score((dpa[0] + B[i] - cost * EVEN, dpa[1] + EVEN), (dpb[0] + B[i], dpb[1])) dpa = ndpa dpb = ndpb return max(dpa, dpb) score, cnt = alien_dp(0) if cnt <= H: print(score) return ng, ok = 0, INF while ok - ng > 1: med = (ng + ok) // 2 score, cnt = alien_dp(med) if cnt > H: ng = med else: ok = med score, cnt = alien_dp(ok) print(score + ok * H) def main(): T = int(input()) for _ in range(T): solve() if __name__ == "__main__": main()