#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 = 0, a[ohara], b[ohara], c, d, cmp, cmpp, m, h, w,
                 x, y, sum = 0, pos, k, q;
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;
  map<long long, long long> mp;
  for (long long int(i) = 0; (i) < (int)(n); (i)++) {
    cin >> a[i];
    b[i] = a[i];
    mp[a[i]] = i;
  }
  priority_queue<long long> que;
  priority_queue<long long> anss;
  long long ma, start, end;
  sort(a, a + n);
  ans = a[q - 1] - a[0];
  reverse(a, a + n);
  ans = min(ans, a[0] - a[q - 1]);
  for (long long int(i) = 0; (i) < (int)(n); (i)++) {
    ma = 0;
    for (long long int j = (i); j < (i + k); j++) {
      ma = max(ma, b[j]);
    }
    que.push(ma);
  }
  for (long long int(i) = 0; (i) < (int)(q); (i)++) {
    anss.push(que.top());
    pos = mp[que.top()];
    que.pop();
  }
  return 0;
}
