#include <bits/stdc++.h>
using namespace std;
int n, k, tot;
int a[2007];
bool fl[2007];
priority_queue<int> q;
void input() {
  scanf("%d%d%d", &n, &k, &tot);
  int i;
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
  }
}
void solve() {
  int i, j;
  int ans = -1;
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= n; j++) {
      if (a[j] < a[i]) {
        fl[j] = false;
      } else {
        fl[j] = true;
      }
    }
    priority_queue<int> aux;
    for (j = 1; j <= n; j++) {
      if (fl[j] == false) {
        if (aux.size() >= k) {
          int h = aux.size() - k + 1;
          while (h > 0) {
            q.push(aux.top());
            aux.pop();
            h--;
          }
        }
        while (aux.empty() == false) {
          aux.pop();
        }
      } else {
        aux.push(-a[j]);
      }
    }
    if (aux.size() >= k) {
      int h = aux.size() - k + 1;
      while (h > 0) {
        q.push(aux.top());
        aux.pop();
        h--;
      }
    }
    while (aux.empty() == false) {
      aux.pop();
    }
    if (q.size() < tot) {
      while (q.empty() == false) {
        q.pop();
      }
    } else {
      int h = tot;
      int mn, mx;
      while (h > 0) {
        if (h == tot) {
          mn = -q.top();
        }
        if (h == 1) {
          mx = -q.top();
        }
        h--;
        q.pop();
      }
      if (ans < 0) {
        ans = (mx - mn);
      }
      if (ans > (mx - mn)) {
        ans = (mx - mn);
      }
    }
  }
  printf("%d\n", ans);
}
int main() {
  input();
  solve();
  return 0;
}
