#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
  int N;
  int K;
  int Q;
  cin >> N >> K >> Q;
  vector<i64> A(N);
  for (int(i) = (0); (i) <= (N - 1); (i)++) cin >> A[i];
  using P = pair<i64, i64>;
  vector<P> vec;
  for (int(i) = (0); (i) <= (N - 1); (i)++) vec.emplace_back(A[i], i);
  vector<bool> used(N, false);
  i64 ans = 1e18;
  for (int(i) = (0); (i) <= (N - 1); (i)++) {
    vector<i64> able;
    vector<i64> temp;
    for (int(j) = (0); (j) <= (N - 1); (j)++) {
      if (used[j]) {
        sort(temp.begin(), temp.end());
        int len = temp.size();
        for (int(k) = (0); (k) <= (len - K); (k)++) {
          able.push_back(temp[k]);
        }
        temp.assign(0, 0);
      } else {
        temp.push_back(A[j]);
      }
    }
    sort(temp.begin(), temp.end());
    int len = temp.size();
    for (int(k) = (0); (k) <= (len - K); (k)++) {
      able.push_back(temp[k]);
    }
    temp.assign(0, 0);
    sort(able.begin(), able.end());
    if (able.size() >= Q) {
      ans = min(ans, able[Q - 1] - able[0]);
    }
    used[vec[i].second] = true;
  }
  cout << ans << endl;
}
