#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
const long long mod = 1e9 + 7;
const int oo = 1e9;
int dx[] = {0, 0, 1, -1, 1, -1, 1, -1};
int dy[] = {1, -1, 0, 0, -1, 1, 1, -1};
int n, k;
int t[300];
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 0; i <= n - 1; i++) scanf("%d", &t[i]);
  int ans = -oo;
  for (int i = 0; i < n; i++) {
    multiset<int> s;
    for (int j = 0; j < n; j++) s.insert(t[j]);
    priority_queue<int> q;
    int sum = 0;
    for (int j = i; j < n; j++) {
      sum += t[j];
      s.erase(s.find(t[j]));
      q.push(-t[j]);
      ans = max(ans, sum);
      queue<int> tmp, tmp2;
      int tmp_sum = sum;
      for (int x = 0; x < k && s.size() && q.size(); x++) {
        if (-q.top() >= *(--s.end())) break;
        auto it = --s.end();
        tmp.push(*it);
        tmp2.push(-q.top());
        tmp_sum -= -q.top();
        tmp_sum += *it;
        q.pop();
        s.erase(it);
        ans = max(ans, tmp_sum);
      }
      while (!tmp.empty()) {
        s.insert(tmp.front());
        tmp.pop();
      }
      while (!tmp2.empty()) {
        q.push(-tmp2.front());
        tmp2.pop();
      }
    }
  }
  printf("%d", ans);
}
