#include <bits/stdc++.h>
using namespace std;
void PR(vector<int>& v) {
  for (auto& x : v) cout << x << ' ';
  cout << endl;
}
vector<vector<int> > solve(const vector<int>& v) {
  int K = (int)(v).size();
  int maxt = K * (K - 1) / 2;
  vector<vector<int> > res(K + 1, vector<int>(maxt + 1, -(1 << 29)));
  res[0][0] = 0;
  for (int it = 0; it < int(K); ++it) {
    int elem = v[it];
    for (int i = it + 1; i-- > 0;) {
      vector<int>& in = res[i];
      vector<int>& out = res[i + 1];
      int takes = it - i;
      for (int t = 0; t < int(maxt + 1 - takes); ++t)
        out[t + takes] = max(out[t + takes], in[t] + elem);
    }
  }
  for (int i = 0; i < int(K + 1); ++i) {
    int best = -(1 << 29);
    for (int j = 0; j < int(maxt + 1); ++j) {
      res[i][j] = best = max(res[i][j], best);
    }
  }
  return res;
}
int main() {
  cin.sync_with_stdio(false);
  int N, K, S;
  cin >> N >> K >> S;
  vector<int> a(N), b, c;
  for (int i = 0; i < int(N); ++i) cin >> a[i];
  int sumk = 0;
  for (int i = 0; i < int(K); ++i) b.push_back(a[i]), sumk += a[i];
  for (int i = K; i < int(N); ++i) c.push_back(-a[i]);
  reverse(b.begin(), b.end());
  auto B = solve(b);
  auto C = solve(c);
  int res = 0;
  for (int bad = 0; bad < int(min(K, N - K) + 1); ++bad) {
    vector<int>& B2 = B[bad];
    vector<int>& C2 = C[bad];
    int lim = S - bad * bad;
    for (int t0 = 0; t0 < int((int)(B2).size()); ++t0) {
      int t1 = min(lim - t0, (int)(C2).size() - 1);
      if (t1 < 0) continue;
      res = max(res, B2[t0] + C2[t1]);
    }
  }
  cout << sumk - res << endl;
}
