#include <bits/stdc++.h>
std::set<int> po;
int n, m, a, T, now;
int cou(int x) { return (x + 1) / (a + 1); }
int main() {
  int x, t = 0, p, q;
  scanf("%d%d%d", &n, &m, &a);
  now = cou(n);
  po.insert(0);
  po.insert(n + 1);
  scanf("%d", &T);
  while (T--) {
    t++;
    scanf("%d", &x);
    p = *(--po.lower_bound(x));
    q = *(po.lower_bound(x));
    po.insert(x);
    now -= (cou(q - p - 1));
    now += cou(x - p - 1);
    now += cou(q - x - 1);
    if (now < m) {
      printf("%d", t);
      return 0;
    }
  }
  printf("-1");
}
