#include <bits/stdc++.h>
using namespace std;
const int N = 2e3 + 5;
int n, k, Q, a[N], f[N][N];
priority_queue<int> q;
vector<int> v;
bool check(int pos) {
  int mn = a[pos];
  for (int i = max(1, pos - k + 1); i <= pos; i++) {
    if (i + k - 1 > n) return false;
    if (f[i][k] == mn) return true;
  }
  return false;
}
void update() {
  while (!q.empty()) {
    if (q.size() >= k) v.push_back(-q.top());
    q.pop();
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> k >> Q;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 1; i <= n; i++) {
    f[i][1] = a[i];
    for (int j = i + 1; j <= n; j++) f[i][j - i + 1] = min(f[i][j - i], a[j]);
  }
  int res = 2e9;
  for (int i = 1; i <= n; i++) {
    if (!check(i)) continue;
    int mn = a[i];
    for (int j = 1; j <= n; j++) {
      if (j == i) continue;
      if (a[j] >= mn)
        q.push(-a[j]);
      else
        update();
    }
    update();
    if (v.size() >= 1) sort(v.begin(), v.end());
    if (v.size() >= Q - 1) res = min(res, v[Q - 2] - mn);
    v.clear();
  }
  cout << res << '\n';
  return 0;
}
