N, K = map(int, input().split()) A = list(map(int, input().split())) B = list(map(int, input().split())) def alien_dp(l): dpa = (0, 0) dpb = (-INF, 0) for i in range(N): ndpa = max((dpa[0] + A[i], dpa[1]), (dpb[0] + A[i] - l, dpb[1] - 1)) ndpb = max((dpa[0] + B[i], dpa[1]), (dpb[0] + B[i], dpb[1])) dpa = ndpa dpb = ndpb score, cnt = max(dpa, dpb) cnt = -cnt return score, cnt score, cnt = alien_dp(0) if cnt <= K: print(score) exit() ng, ok = 0, INF while ok - ng > 1: med = (ok + ng) // 2 score, cnt = alien_dp(med) if cnt > K: ng = med else: ok = med score, cnt = alien_dp(ok) print(score + ok * K)