#include <bits/stdc++.h>
using namespace std;
set<pair<int, int> > s;
const int maxn = 2e5 + 20;
int t[maxn];
int main() {
  int n, k, a, m;
  scanf("%d%d%d", &n, &k, &a);
  int pos;
  int cnt = (n + 1) / (a + 1);
  scanf("%d", &m);
  for (int i = 0; i < m; i++) scanf("%d", &t[i]);
  s.insert(make_pair(1, n));
  for (int i = 0; i < m; i++) {
    int b = t[i];
    set<pair<int, int> >::iterator it = s.lower_bound(make_pair(b, b));
    if (it == s.end()) it--;
    if ((it->second) < b) continue;
    if ((it->first) > b) it--;
    int c = (it->first);
    int d = b - 1;
    int e = b + 1;
    int f = (it->second);
    if (!(b >= c && b <= f)) continue;
    cnt -= (2 + f - c) / (a + 1);
    s.erase(it);
    if ((d - c + 2) / (a + 1) > 0) {
      cnt += (d - c + 2) / (a + 1);
      s.insert(make_pair(c, d));
    }
    if ((f - e + 2) / (a + 1) > 0) {
      cnt += (f - e + 2) / (a + 1);
      s.insert(make_pair(e, f));
    }
    if (cnt < k) {
      pos = i;
      break;
    }
  }
  if (cnt >= k)
    printf("-1\n");
  else
    printf("%d\n", pos + 1);
  return 0;
}
