#include using namespace std; using ll = long long; #define rep(i, n) for (ll i = 0; i < (n); i++) const ll INF = 1e18; int main() { ll n, k; cin >> n >> k; if (n < 2*k - 1) { cout << "Impossible" << endl; return 0; } vector A(n); rep(i, n) cin >> A[i]; vector dp1(k+1, -INF), dp2(k+1, -INF); dp1[0] = 0; dp2[0] = 0; rep(i, n) { vector ndp1(k+1, -INF), ndp2(k+1, -INF); rep(j, k+1) { if (j+1 <= k) ndp1[j+1] = max(ndp1[j+1], dp2[j] + A[i]); ndp2[j] = max({ndp2[j], dp1[j], dp2[j]}); ndp1[j] = max(ndp1[j], dp1[j]); } swap(dp1, ndp1); swap(dp2, ndp2); } cout << max(dp1[k], dp2[k]) << endl; return 0; }