#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, k, a, m, x, tk, i, tr, tl, r, l;
  scanf("%d %d %d", &n, &k, &a);
  scanf("%d", &m);
  tk = (n + 1) / (a + 1);
  set<int> ceils;
  map<int, pair<int, int> > intv;
  ceils.insert(n);
  intv[n] = pair<int, int>(1, tk);
  for (i = 1; i <= m; i++) {
    scanf("%d ", &x);
    auto it = ceils.lower_bound(x);
    tk -= intv[*it].second;
    r = intv[*it].first;
    l = *it;
    ceils.erase(it);
    if (x > r) {
      tr = ((x - r) + 1) / (a + 1);
      ceils.insert(x - 1);
      intv[x - 1] = pair<int, int>(r, tr);
      tk += tr;
    }
    if (x < l) {
      tl = ((l - x) + 1) / (a + 1);
      ceils.insert(l);
      intv[l] = pair<int, int>(x + 1, tl);
      tk += tl;
    }
    if (tk < k) break;
  }
  if (i > m)
    printf("-1\n");
  else
    printf("%d\n", i);
  return 0;
}
