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 K2 = K // 2 if EVEN else (K - 1) // 2 def max_score(a: tuple[int,int], b: tuple[int,int]): if a[0] != b[0]: return max(a, b) else: return min(a, b) def alien_dp(cost: int): 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 <= K2: print(score) exit ng, ok = 0, INF while ok - ng > 1: med = (ng + ok) // 2 score, cnt = alien_dp(med) if cnt > K2: ng = med else: ok = med score, cnt = alien_dp(ok) print(score + ok * K2)