#include <bits/stdc++.h>
using namespace std;
set<long long> s, s1;
std::set<long long>::iterator l, h;
int main() {
  long long n, i, j, k, a, p, low, high, m;
  bool flag = false;
  scanf("%lld %lld %lld", &n, &k, &a);
  scanf("%lld", &m);
  a++;
  p = (n + 1) / a;
  long long q = k;
  s.insert(0);
  s.insert(n + 1);
  s1.insert(0);
  s1.insert(-n - 1);
  for (i = 1; i <= m; i++) {
    scanf("%lld", &k);
    if (!flag && k <= n && k >= 1) {
      l = s.lower_bound(k);
      if (l != s.begin()) --l;
      h = s1.lower_bound(-k);
      low = *l;
      if (h != s1.begin()) --h;
      high = -*h;
      long long z = p - ((high - low) / a) + (k - low) / a + (high - k) / a;
      if (z < q) {
        printf("%lld", i);
        flag = true;
      }
      p = z;
      s.insert(k);
      s1.insert(-k);
    }
  }
  if (!flag) printf("-1");
  return 0;
}
