#include <bits/stdc++.h>
using namespace std;
const int INF = numeric_limits<int>::max();
const long long LINF = numeric_limits<long long>::max();
void solve() {
  int n, k, a;
  cin >> n >> k >> a;
  int m;
  cin >> m;
  set<pair<int, int> > q;
  q.insert(make_pair(n, 1));
  int am;
  if (n < a)
    am = 0;
  else
    am = 1 + (n - a) / (a + 1);
  for (int ans = 1; ans <= m; ++ans) {
    int x;
    cin >> x;
    set<pair<int, int> >::iterator it = q.lower_bound(make_pair(x, 0));
    int l = it->second, r = it->first;
    int d = r - l + 2;
    q.erase(it);
    am -= d / (a + 1);
    if (l <= x - 1) {
      q.insert(make_pair(x - 1, l));
      am += (x - l + 1) / (a + 1);
    }
    if (x + 1 <= r) {
      q.insert(make_pair(r, x + 1));
      am += (r - (x + 1) + 2) / (a + 1);
    }
    if (am < k) {
      cout << ans;
      return;
    }
  }
  cout << -1;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
