#include <bits/stdc++.h>
using namespace std;
int n, k, a, m;
int calc(int n, int a) { return (n + 1) / (a + 1); }
int main() {
  scanf("%d%d%d", &n, &k, &a);
  scanf("%d", &m);
  set<pair<int, int> > s;
  set<pair<int, int> >::iterator it;
  s.insert(make_pair(1, n));
  int can = calc(n, a);
  for (int x, i = 1; i <= m; ++i) {
    scanf("%d", &x);
    it = s.upper_bound(make_pair(x, 1e9));
    --it;
    can -= calc(it->second - it->first + 1, a);
    pair<int, int> cur = *it;
    s.erase(it);
    if (cur.first != x) {
      can += calc(x - cur.first, a);
      s.insert(make_pair(cur.first, x - 1));
    }
    if (cur.second != x) {
      can += calc(cur.second - x, a);
      s.insert(make_pair(x + 1, cur.second));
    }
    if (can < k) {
      printf("%d\n", i);
      return 0;
    }
  }
  puts("-1");
  return 0;
}
