#include <bits/stdc++.h>
using namespace std;
int n, k, a, m;
int val[1000000 + 5];
int x[1000000 + 5], acc[1000000 + 5];
void calcAcc() {
  int sum = 0;
  for (int i = 0; i < n; i++) {
    sum += val[i];
    acc[i] = sum;
  }
}
void Do(int lim) {
  for (int i = 0; i <= lim; i++) val[x[i]] = 0;
  calcAcc();
}
void unDo(int lim) {
  for (int i = 0; i <= lim; i++) val[x[i]] = 1;
  calcAcc();
}
bool valid(int indx) {
  Do(indx);
  int cnt = 0;
  for (int i = 0; i + a <= n; i++) {
    int sum;
    if (i)
      sum = acc[i + a - 1] - acc[i - 1];
    else
      sum = acc[i + a - 1];
    if (sum == a) cnt++, i += (a);
  }
  unDo(indx);
  return (cnt >= k);
}
int main() {
  cin >> n >> k >> a;
  for (int i = 0; i <= n; i++) val[i] = 1;
  cin >> m;
  for (int i = 0; i < m; i++) {
    cin >> x[i];
    x[i]--;
  }
  int s = 0, e = m - 1;
  while (s < e) {
    int mid = s + (e - s) / 2;
    bool ok = valid(mid);
    if (!ok) {
      e = mid;
    } else
      s = mid + 1;
  }
  if (valid(m - 1))
    cout << "-1" << endl;
  else
    cout << e + 1 << endl;
  return 0;
}
