#include <bits/stdc++.h>
using namespace std;
int n, k, a, m, shot[((int)200003)];
bool noShip[((int)200003)];
bool k_ships(int limit) {
  int ships = 0, last = 0, now = 0;
  memset(noShip, 0, sizeof(noShip));
  for (int i = 0; i <= limit; i++) noShip[shot[i]] = 1;
  for (int i = 1; i <= n; i++, now++)
    if (noShip[i]) {
      ships += (i - last) / a;
      last = i;
    }
  return (ships + (n + 1 - last) / a) >= k;
}
int lie_on() {
  int left = 0, right = m - 1, middle;
  while (left < right) {
    middle = (left + right) >> 1;
    if (k_ships(middle))
      left = middle + 1;
    else
      right = middle - 1;
  }
  if (k_ships(left)) left++;
  return left == m ? -2 : left;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k >> a >> m;
  a++;
  for (int i = 0; i < m; i++) cin >> shot[i];
  cout << lie_on() + 1 << '\n';
  return 0;
}
