import sys, time, random, heapq, math, itertools, copy from collections import deque, Counter, defaultdict #from sortedcontainers import SortedSet, SortedList from bisect import bisect, bisect_left, bisect_right import heapq as hq from functools import cache, cmp_to_key def debug(*x):print('debug:',*x, file=sys.stderr) sys.setrecursionlimit(300000) input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 61 - 1 mod = 998244353 dir = [(0, 1), (0, -1), (1, 0), (-1, 0)] N, K = mi() A = li() if N < 2 * K - 1: print("Impossible") exit() dp = [[-inf, -inf] for _ in range(K+1)] dp[0][0] = 0 for i in range(N): next_dp = [[-inf, -inf] for _ in range(K+1)] for j in range(K+1): if j + 1 < K+1 and dp[j][0] != -inf: # 選ぶ next_dp[j+1][1] = max(next_dp[j+1][1], dp[j][0] + A[i]) #選ばない next_dp[j][0] = max(next_dp[j][0], dp[j][0], dp[j][1]) dp = next_dp debug(dp) ans = max(dp[-1][0], dp[-1][1]) print(ans)