#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9, MOD = 1e9 + 7, ohara = 1e6;
const long long LINF = 1e18;
long long int n, cnt = 0, ans = LINF, a[ohara], b, c, d, cmp, cmpp, m, h, w, x,
                 y, sum = 0, pos, q, mi, k, anss[ohara], cntt = 0;
int dy[] = {1, 0, -1, 0};
int dx[] = {0, 1, 0, -1};
string alph("abcdefghijklmnopqrstuvwxyz"), s;
bool fl;
struct edge {
  int to, cost;
};
int main(void) {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> n >> k >> q;
  for (long long int(i) = 0; (i) < (int)(n); (i)++) cin >> a[i];
  for (long long int(i) = 0; (i) < (int)(n); (i)++) {
    mi = a[i];
    long long cmp[4000] = {}, anss[4000] = {};
    cnt = 0;
    for (long long int(j) = 0; (j) < (int)(n); (j)++) {
      if (mi > a[j] || j == n - 1) {
        if (j == n - 1 && mi < a[j]) cmp[cnt++] = a[j];
        if (cnt >= k) {
          sort(cmp, cmp + cnt);
          for (long long int(l) = 0; (l) < (int)(cnt - k + 1); (l)++)
            anss[cntt++] = cmp[l];
          cnt = 0;
        }
        cnt = 0;
      } else
        cmp[cnt++] = a[j];
    }
    sort(anss, anss + cntt);
    if (cntt >= q) {
      ans = min(ans, anss[q - 1] - mi);
    }
    cntt = 0;
  }
  if (n == 1 || n == k)
    cout << (0) << endl;
  else {
    if (ans < 0) ans = 0;
    cout << (ans) << endl;
  }
  return 0;
}
