#include <bits/stdc++.h>
using namespace std;
int n, k, second, m;
int a[200005], b[200005];
int check(int move) {
  for (int i = 1; i <= move; i++) b[i] = a[i];
  sort(b + 1, b + move + 1);
  b[0] = 1;
  b[move + 1] = n;
  int cnt = 0;
  for (int i = 0; i <= move; i++) {
    int l = b[i], r = b[i + 1];
    int len;
    if (i == 0 || i == move)
      len = l == r ? 0 : max(0, r - l);
    else
      len = l == r ? 0 : max(0, r - l - 1);
    cnt += max(0, (len + 1) / (second + 1));
  }
  if (cnt >= k)
    return 1;
  else
    return 0;
}
int main() {
  scanf("%d", &n);
  scanf("%d", &k);
  scanf("%d", &second);
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) scanf("%d", &a[i]);
  int lo = 1, hi = m, mid;
  while (lo + 1 < hi) {
    int mid = (lo + hi) / 2;
    if (check(mid) == 1)
      lo = mid + 1;
    else
      hi = mid;
  }
  if (check(m) == 1)
    cout << -1;
  else if (check(lo) == 1)
    cout << lo + 1;
  else
    cout << lo;
}
