# 理解できていないのでもう一度やる # 一番手前は偶数番しか取れない、制約から自明 # 一番手前で偶数番をとるので、それ以後は奇数番は繰り上がるし # それ以後の偶数番は後ろからとればいいので結局とりたいものが取れる # 前から見ていって、偶数番を取って、その後の最高値K-1個を探索していると間に合わない # だから後ろから見ていって、最高値K個をheapで管理、その合計値sも管理 # 後ろから見ていってその番号が偶数番のときのみ、ans更新すればいい from heapq import * N, K = map(int, input().split()) A = list(map(int, input().split())) H = [] heapify(H) s = 0 ans = 0 for i in range(N-1, -1, -1): heappush(H, A[i]) s += A[i] if len(H) == K: if i%2 == 1: #0-indexedなのでこれが偶数番 ans = max(ans, s) smallest = heappop(H) s -= smallest print(ans)