#include <bits/stdc++.h>
using namespace std;
int a[1111];
int main() {
  int n, K;
  scanf("%d", &n);
  scanf("%d", &K);
  for (int i = 1; i <= (n); i++) scanf("%d", &a[i]);
  int ans = a[1];
  for (int i = 1; i <= (n); i++) {
    set<pair<int, int> > sl, sr, sp;
    for (int j = i; j <= n; j++) sr.insert(make_pair(-a[j], j));
    for (int j = 1; j < i; j++) sp.insert(make_pair(-a[j], j));
    int ts = 0;
    for (int j = i; j <= n; j++) {
      sr.erase(make_pair(-a[j], j));
      sl.insert(make_pair(a[j], j));
      ts += a[j];
      int e1 = 0, e2 = 0;
      set<pair<int, int> >::iterator pl = sl.begin(), pr = sr.begin(),
                                     pp = sp.begin();
      ans = max(ans, ts);
      for (int c = 1; c <= K; c++) {
        if (pl == sl.end()) break;
        if (pr == sr.end() && pp == sp.end()) break;
        e1 += (*pl).first;
        pl++;
        if (pr == sr.end()) {
          e2 -= (*pp).first;
          pp++;
        } else if (pp == sp.end()) {
          e2 -= (*pr).first;
          pr++;
        } else {
          int a1 = -(*pp).first;
          int a2 = -(*pr).first;
          if (a1 > a2) {
            e2 -= (*pp).first;
            pp++;
          } else {
            e2 -= (*pr).first;
            pr++;
          }
        }
        ans = max(ans, ts - e1 + e2);
      }
    }
  }
  cout << ans << endl;
  return 0;
}
