#include <bits/stdc++.h>
using namespace std;
template <class X, class Y>
void minimize(X& x, const Y& y) {
  if (x > y) x = y;
}
template <class X, class Y>
void maximize(X& x, const Y& y) {
  if (x < y) x = y;
}
const int MAXN = 160;
const int INF = (int)1E9 + 10;
int n, k, s;
int a[MAXN], f[2][151][5626];
int main() {
  scanf("%d%d%d", &n, &k, &s);
  for (int i = (1); i <= (int)(n); i++) scanf("%d", &a[i]);
  s = min(s, (n * n) / 4);
  int now = 0, last = 1;
  for (int j = (1); j <= (int)(k); j++)
    for (int l = (0); l <= (int)(s); l++) {
      f[now][j][l] = INF;
      f[last][j][l] = INF;
    }
  for (int i = (1); i <= (int)(n); i++) {
    last = now;
    now = 1 - now;
    for (int j = (1); j <= (int)(min(i, k)); j++)
      for (int l = (0); l <= (int)(s); l++) {
        f[now][j][l] = f[last][j][l];
        if (l >= i - j)
          minimize(f[now][j][l], f[last][j - 1][l - (i - j)] + a[i]);
      }
  }
  int ans = INF;
  for (int i = (0); i <= (int)(s); i++) minimize(ans, f[now][k][i]);
  printf("%d", ans);
}
