using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { new Program().Solve(); } void Solve() { string[] tmp = Console.ReadLine().Split(); int n = int.Parse(tmp[0]); int m = int.Parse(tmp[1]); int[] w = Console.ReadLine().Split().Select(int.Parse).ToArray(); const int Inf = (int)1e9; var dp = new int[3030, 3030, 2, 2]; for (int i = 0; i < 3030; i++) for (int j = 0; j < 3030; j++) for (int k = 0; k < 2; k++) for (int l = 0; l < 2; l++) dp[i, j, k, l] = -Inf; dp[0, 0, 0, 0] = dp[0, 1, 1, 1] = 0; for (int i = 1; i < n; i++) for (int j = 0; j <= m; j++) for (int k = 0; k <= 1; k++) for (int l = 0; l <= 1; l++) { dp[i, j, 0, l] = Math.Max(dp[i, j, 0, l], dp[i - 1, j, k, l]); dp[i, j + 1, 1, l] = Math.Max(dp[i, j + 1, 1, l], dp[i - 1, j, k, l] + w[i] * k); } int ans = -Inf; for (int k = 0; k <= 1; k++) for (int l = 0; l <= 1; l++) ans = Math.Max(ans, dp[n - 1, m, k, l] + k * l * w[0]); Console.WriteLine(ans); } } }