from collections import deque MIN_INT = -float("inf") def main(): N, K = map(int, input().split()) A = map(int, input().split()) dp = [[MIN_INT] * (K + 1) for _ in range(2)] dp[0][0] = 0 for a in A: new_dp = [[MIN_INT] * (K + 1) for _ in range(2)] # 前に拾っていない for k in range(K + 1): new_dp[0][k] = max(new_dp[0][k], dp[0][k]) if k + 1 <= K: new_dp[1][k+ 1] = max(new_dp[1][k + 1], dp[0][k] + a) # 前に拾った for k in range(K + 1): new_dp[0][k] = max(new_dp[0][k], dp[1][k]) dp = new_dp answer = MIN_INT for j in range(2): answer = max(answer, dp[j][K]) if answer == MIN_INT: print("Impossible") else: print(answer) if __name__ == "__main__": main() # main2()