#include <bits/stdc++.h>
using namespace std;
bool man(int a, int b) { return a < b; }
int main() {
  int n, z;
  cin >> n >> z;
  int a[1005];
  for (int i = 0; i < n; i++) cin >> a[i];
  int mx = -200 * 2000;
  for (int i = 0; i < n; i++) {
    for (int j = i; j < n; j++) {
      vector<int> mn, max;
      for (int k = i; k <= j; k++) {
        if (mn.size() < z) {
          mn.push_back(a[k]);
          sort(mn.begin(), mn.end());
        } else if (!mn.empty() && mn[mn.size() - 1] > a[k]) {
          mn[mn.size() - 1] = a[k];
          sort(mn.begin(), mn.end());
        }
      }
      for (int k = 0; k < i; k++) {
        if (max.size() < z) {
          max.push_back(a[k]);
          sort(max.begin(), max.end());
        } else if (!max.empty() && max[0] < a[k]) {
          max[0] = a[k];
          sort(max.begin(), max.end());
        }
      }
      for (int k = j + 1; k < n; k++) {
        if (max.size() < z) {
          max.push_back(a[k]);
          sort(max.begin(), max.end());
        } else if (!max.empty() && max[0] < a[k]) {
          max[0] = a[k];
          sort(max.begin(), max.end());
        }
      }
      int sum = 0;
      for (int k = i; k <= j; k++) {
        sum += a[k];
      }
      int f = min(max.size(), mn.size());
      for (int k = 0; k < f; k++) {
        if (mn[k] < max[max.size() - 1 - k])
          sum += -mn[k] + max[max.size() - 1 - k];
      }
      if (sum > mx) mx = sum;
    }
  }
  cout << mx << endl;
}
