#if __has_include() #include using namespace atcoder; #else #include #if __has_include() #include using namespace atcoder; #endif #endif using namespace std; #define int long long #define all(x) (x).begin(), (x).end() #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rrep(i, n) for(int i = (int)((n) - 1); i >= 0; i--) template bool chmax(T &a,const T &b){if(a bool chmin(T &a,const T &b){if(a>b){a=b;return true;}return false;} // using mint = modint; signed main(){ int n, k; cin >> n >> k; vector a(n); for(auto&& ai : a) cin >> ai; if((n + 1) / 2 < k){ println("Impossible"); return 0; } // i個見てj個消してて(k?i個目を消した:消してない)ときの最大値 const int inf = 1ll << 60; vector dp(n + 1, vector(k + 1, vector(2, -inf))); dp.at(0).at(0).at(0) = 0; rep(i, n){ auto ai = a.at(i); rep(j, k + 1){ chmax(dp.at(i + 1).at(j).at(0), *max_element(all(dp.at(i).at(j)))); } rep(j, k){ chmax(dp.at(i + 1).at(j + 1).at(1), dp.at(i).at(j).at(0) + ai); } } println("{}", *max_element(all(dp.back().back()))); } /* (n+1)/2