#include <bits/stdc++.h>
using namespace std;
int n, m, i, j, k, l, a[1000009], b[1000009], p[1000009], ans, cn, t, x, y, z,
    mx, mn, s, lo, hi, mid;
char c[1000009], d[1000009], ch;
int isvalid(int num) {
  memset(b, 0, sizeof(b));
  b[0] = b[n + 1] = 1;
  for (int o = 0; o < num; o++) {
    b[a[o]] = 1;
  }
  int cnt = 0;
  int prev = 0;
  for (int o = 1; o <= n + 1; o++) {
    if (b[o] == 1) {
      int g = o - prev - 1;
      prev = o;
      int tmp = (g + 1) / (x + 1);
      cnt += tmp;
    }
  }
  if (cnt >= k) {
    return 1;
  } else {
    return 0;
  }
}
int main() {
  while (scanf("%d %d %d", &n, &k, &x) != EOF) {
    scanf("%d", &m);
    for (i = 0; i < m; i++) {
      scanf("%d", &a[i]);
    }
    lo = 1;
    hi = m;
    ans = m + 1;
    while (lo <= hi) {
      mid = (lo + hi) / 2;
      if (isvalid(mid) == 1) {
        lo = mid + 1;
      } else {
        ans = mid;
        hi = mid - 1;
      }
    }
    if (ans == m + 1) {
      ans = -1;
    }
    printf("%d\n", ans);
  }
  return 0;
}
