#include <bits/stdc++.h>
using namespace std;
const int N = 1e7 + 9, M = 1e3, OO = 0x3f3f3f3f;
const double EPS = 1e-9;
inline int readi() {
  int n;
  scanf("%d", &n);
  return n;
}
inline long long readll() {
  long long n;
  scanf("%I64d", &n);
  return n;
}
inline char readc() {
  char c;
  scanf("%c ", &c);
  return c;
}
inline double readd() {
  double n;
  scanf("%lf", &n);
  return n;
}
inline bool dCMP(const double& a, const double& b) { return fabs(a - b) < EPS; }
void IO() {}
set<pair<int, int>> s;
int n, m, k, a;
int calc(int l, int r) { return (r - l + 2) / (a + 1); }
int main() {
  n = readi(), k = readi(), a = readi(), m = readi();
  int mxship = calc(1, n);
  s.insert({n, 1});
  int i = 0;
  while (m--) {
    i++;
    int x = readi();
    auto it = s.lower_bound({x, -1});
    s.erase(it);
    int l = it->second, r = it->first;
    mxship -= calc(l, r);
    int lship = calc(l, x - 1), rship = calc(x + 1, r);
    ;
    s.insert({x - 1, l});
    s.insert({r, x + 1});
    mxship += (lship + rship);
    if (mxship < k) {
      printf("%d\n", i);
      return 0;
    }
  }
  printf("-1\n");
  return 0;
}
