#include using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(0); int n, m; const int INF = 1 << 30; cin >> n >> m; vector w(n); for(auto &v : w) cin >> v; //頂点番号,使った数,初期で使ったか,前で使ったか vector>> dp(n + 1, vector>(n + 1, array({-INF, -INF, -INF, -INF}))); dp[1][0][0b00] = 0; dp[1][1][0b11] = 0; for(int i = 1; i < n; i++){ for(int j = 0; j <= i; j++){ for(int k = 0; k < 4; k++){ if(k & 1){ dp[i + 1][j][k & 2] = max(dp[i + 1][j][k & 2], dp[i][j][k]); dp[i + 1][j + 1][1 + (k & 2)] = max(dp[i + 1][j + 1][1 + (k & 2)], dp[i][j][k] + w[i - 1]); }else{ dp[i + 1][j][k & 2] = max(dp[i + 1][j][k & 2], dp[i][j][k]); dp[i + 1][j + 1][1 + (k & 2)] = max(dp[i + 1][j + 1][1 + (k & 2)], dp[i][j][k]); } } } } int ans = -INF; for(int i = 0; i < 4; i++){ ans = max(ans, dp[n][m][i] + (i == 3 ? w[n - 1] : 0)); } cout << ans << '\n'; }