#include <bits/stdc++.h>
using namespace std;
const int maxm = 2e6 + 9;
const int maxn = 2e6 + 9;
const int N = 150 + 9;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
const int base = 131;
const double eps = 1e-4;
int n, K, s;
int dp[2][N][N * N], a[N];
int now, pre;
int ans = 0;
int read() {
  int a = 1, b = 0;
  char c = getchar();
  while (c > '9' || c < '0') {
    if (c == '-') a = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    b = (b << 1) + (b << 3) + (c ^ '0');
    c = getchar();
  }
  return a * b;
}
void print(int x) {
  if (x < 0) putchar('-'), x = -x;
  if (x > 9) print(x / 10);
  putchar(x % 10 + '0');
}
int main() {
  int tmp;
  n = read(), K = read(), s = read();
  for (int i = (1); i <= (n); ++i) a[i] = read();
  for (int i = (1); i <= (K); ++i) ans += a[i];
  now = 0;
  pre = 1;
  swap(now, pre);
  for (int i = (1); i <= (n); ++i) {
    for (int j = (1); j <= (min(i, K)); ++j) {
      for (int k = (0); k <= (min(s, n * n)); ++k) {
        dp[now][j][k] = inf;
        if (i > j) dp[now][j][k] = dp[pre][j][k];
        if (k - (i - j) >= 0)
          dp[now][j][k] =
              min(dp[now][j][k], dp[pre][j - 1][k - (i - j)] + a[i]);
        if (j == K && (k == s || k == n * n)) ans = min(ans, dp[now][j][k]);
      }
    }
    swap(now, pre);
  }
  print(ans);
  return 0;
}
