#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
#include <cmath>
#include <set>
using namespace std;

#define all(x) x.begin(), x.end()
#define sz(x) static_cast<lng>(x.size())

using lng = long long;

void solve() {
	lng n, k; cin >> n >> k;
	vector<lng> a(n);
	for (int i = 0; i < n; i++) {
		lng x; cin >> x;
		a[i] = x;
	}
	lng ans = 0;
	for (int i = 0; i < n; i++) {
		vector<lng> left_sorted(i), right_sorted(n - i - 1);
		for (int j = 0; j < i; j++) {
			left_sorted[j] = a[j];
		}
		for (int j = 0; j < n - i - 1; j++) {
			right_sorted[j] = a[n - j - 1];
		}
		sort(all(left_sorted), greater<lng>());
		sort(all(right_sorted), greater<lng>());
		int r = min(k - 1, n - i - 1);
		int l = k - 1 - r;
		lng cur_sum = 0, best_sum = 0;
		for (int j = 0; j < l; j++) {
			cur_sum += left_sorted[j] + 1;
		}
		for (int j = 0; j < r; j++) {
			cur_sum += right_sorted[j] + 1;
		}
		cur_sum += a[i] + (i - l + 1ll);
		best_sum = cur_sum;
		while (l < i && r > 0 && left_sorted[l] - right_sorted[r - 1] - 1 > 0ll) {
			cur_sum += left_sorted[l++];
			cur_sum -= right_sorted[--r];
			cur_sum--;
			best_sum = max(best_sum, cur_sum);
		}
		ans = max(best_sum, ans);
	}
	cout << ans;
}

int main() { 
	cin.tie(nullptr)->sync_with_stdio(false);
	int t = 1;
	//cin >> t;
	while (t--) {
		solve();
	}
	return 0;
}
