#include <bits/stdc++.h>
const int OO = 0x3f3f3f3f;
using namespace std;
void fast() { ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); }
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};
const int sizee = 2e5 + 5;
int N[sizee];
int J[sizee];
int n, k, a, m;
bool solve(int F) {
  for (int i = 1; i <= F; i++) J[i] = N[i];
  sort(J + 1, J + F + 1);
  int var = 0;
  J[0] = 1;
  J[F + 1] = n;
  for (int i = 1; i <= F + 1; i++) {
    int temp = 0;
    if (i == 1 || i == F + 1) {
      temp = (J[i] - J[i - 1]);
    } else {
      temp = (J[i] - J[i - 1] - 1);
    }
    int H = temp / (a + 1);
    if (temp % (a + 1) == a) {
      ++H;
    }
    var += H;
  }
  return var >= k;
}
int main() {
  fast();
  cin >> n >> k >> a >> m;
  for (int i = 1; i <= m; i++) cin >> N[i];
  int L = 1, R = m, mid, ans = 0;
  while (L <= R) {
    mid = (L + R) >> 1;
    if (!solve(mid)) {
      ans = mid;
      R = mid - 1;
    } else {
      L = mid + 1;
    }
  }
  if (!ans) {
    cout << -1;
    exit(0);
  }
  cout << ans << endl;
  return 0;
}
