import sys import math import bisect import heapq from collections import deque, defaultdict #160427717982164055zq # ------------------------------------------------- def ST(): return input().rstrip() def IN(): return int(input()) def ML(typ=int): return [typ(x) for x in input().split()] def IM(): return ML() def IL(): return ML() def SR(n:int)->list: return [input().rstrip() for _ in range(n)] def IMatrix(n:int)->list: return [Mul(int) for _ in range(n)] def prefix_sum(L): #1次元リストの累積和を返す ret = [L[0]] for i in range(1, len(L)): ret.append(ret[i-1]+L[i]) return ret N, K = IM() A = IL() if N//2 < K: print("Impossible") exit() dp = [[-10**17]*(K+1) for _ in range(N+1)] # A[:i]のうちちょうどj個を削除したときの最大値。不可能な操作は負の無限大 dp[0][0] = 0 for i in range(1, N+1): for j in range(K+1): if j == 0: dp[i][j] = 0 elif j == 1: dp[i][j] = max(dp[i][j], dp[i-1][j], dp[i-1][j-1]+A[i-1]) else: dp[i][j] = max(dp[i][j], dp[i-1][j], dp[i-2][j-1]+A[i-1]) print(dp[N][K]) #for i in dp: # print(i)