#include using namespace std; using ll = long long; using vll = vector; template using umap = unordered_map; #define rep(i, n) for (int i = 0; i < n;i++) #define rep1(i, n) for (int i = 1; i <= n;i++) #define rrep(i, n) for (int i = n - 1; i >= 0;i--) #define rrep1(i, n) for (int i = n; i >= 1;i--) #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define INF 1LL << 60 #define chmin(a, b) a = min(a, b) #define chmax(a, b) a = max(a, b) int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, k; cin >> n >> k; vector a(n + 1); rep1(i, n) { cin >> a[i]; } vector> dp(n + 1, vector(k + 1, -INF)); dp[0][0] = 0; rep1(i, n) { dp[i][0] = 0; rep1(j, k) { dp[i][j] = dp[i - 1][j]; if (i == 1) { if (j == 1) { chmax(dp[i][j], a[i]); } } else if (i >= 2 && dp[i - 2][j - 1] != -INF) { chmax(dp[i][j], dp[i - 2][j - 1] + a[i]); } } } if (dp[n][k] == -INF) { cout << "Impossible" << endl; return 0; } cout << dp[n][k] << endl; }