INF = 2 * 10**18 inf = 10**18 def f(is_deleted, times): return 2 * times + is_deleted N, K = [int(s) for s in input().split()] A = [int(s) for s in input().split()] dp = [-INF] * (2 * (K + 1)) dp[f(0, 0)] = 0 for a in A: ndp = [-INF] * (2 * (K + 1)) for k in range(K + 1): ndp[f(0, k)] = max(ndp[f(0, k)], dp[f(0, k)], dp[f(1, k)]) if k >= 1: ndp[f(1, k)] = max(ndp[f(1, k)], dp[f(0, k - 1)] + a) dp = ndp ans = max(dp[f(0, k)], dp[f(1, k)]) print(ans if ans > -inf else "Impossible")