#include <bits/stdc++.h>
bool ok(int t);
using namespace std;
int N, K, A, M, moves[200005];
int used[200005], b[200005], c[200005];
bool ok(int t) {
  for (int i = 0; i < N; i++) used[i] = 0;
  for (int i = 0; i < t; i++) used[moves[i]] = 1;
  for (int i = 0; i < N; i++) {
    if (i) used[i] += used[i - 1];
  }
  int placed = 0, u = 0, v = 0, w = 0;
  for (int i = 0; i < N; i++) {
    if (i + A - 1 < N && used[i + A - 1] == (i == 0 ? 0 : used[i - 1])) {
      placed += 1, i += A;
    }
  }
  return placed >= K;
}
int main() {
  scanf("%d%d%d%d", &N, &K, &A, &M);
  for (int i = 0; i < M; i++) scanf("%d", moves + i);
  for (int i = 0; i < M; i++) --moves[i];
  if (ok(M)) return printf("-1\n"), 0;
  int lo = 0, hi = M;
  while (hi - lo > 1) {
    int mid = (hi + lo) / 2;
    if (ok(mid))
      lo = mid;
    else
      hi = mid;
  }
  printf("%d\n", hi);
  return 0;
}
