#include <bits/stdc++.h>
using namespace std;
inline long long in() {
  int32_t x;
  scanf("%d", &x);
  return x;
}
inline long long lin() {
  long long x;
  scanf("%lld", &x);
  return x;
}
const long long maxn = 200 + 10;
const long long mod = 1e9 + 7;
long long a[maxn], dp[maxn][11], res = -1e18, b[maxn];
multiset<long long> st;
int32_t main() {
  long long n = in(), k = in();
  for (long long i = 0; i < n; i++) a[i] = in();
  for (long long l = 0; l < n; l++)
    for (long long r = l; r < n; r++) {
      long long tot = 0;
      for (long long pt = l; pt <= r; pt++) b[pt - l] = a[pt], tot += a[pt];
      st.clear();
      for (long long x = 0; x < n; x++)
        if (x < l || x > r) st.insert(a[x]);
      long long N = r - l + 1;
      sort(b, b + N);
      long long cur = 0;
      long long rem = k;
      while (cur < N && st.size() && *st.rbegin() > b[cur] && rem) {
        tot -= b[cur++];
        rem--;
        tot += *st.rbegin();
        st.erase(st.find(*st.rbegin()));
      }
      res = max(res, tot);
    }
  cout << res << endl;
}
