#include <bits/stdc++.h>
using namespace std;
const int maxn = 2 * 1e5 + 1;
int n, A, k, a[maxn], b[maxn];
int slove(int x) {
  for (int i = 1; i <= x; i++) b[i] = a[i];
  sort(b + 1, b + x + 1);
  int i, l = 1, cou = 0;
  for (i = 1; i <= x; i++) {
    int w = (b[i] - l + 1) / (A + 1);
    cou += w;
    l = b[i] + 1;
  }
  cou += (n - l + 1 + 1) / (A + 1);
  if (cou >= k) return 1;
  return 0;
}
int main() {
  int ans, m;
  while (scanf("%d%d%d", &n, &k, &A) != EOF) {
    ans = 0x3f3f3f3f;
    scanf("%d", &m);
    for (int i = 1; i <= m; i++) scanf("%d", &a[i]);
    int l = 1, r = m;
    while (l <= r) {
      int mid = (l + r) / 2;
      if (slove(mid))
        l = mid + 1;
      else
        r = mid - 1, ans = min(ans, mid);
    }
    if (ans == 0x3f3f3f3f)
      printf("-1\n");
    else
      printf("%d\n", ans);
  }
  return 0;
}
