#include <bits/stdc++.h>
using namespace std;
const int OO = (int)1e9 + 7;
const int MAX = (int)2 * 1e5 + 5;
int n, k, a, m, av;
set<pair<int, int> > s;
void update(int h) {
  auto cur = s.lower_bound(make_pair(h, -1));
  if (cur == s.end() || cur->second > h) return;
  av -= (cur->first - cur->second + 2) / (a + 1);
  int fsz = h - cur->second, ssz = cur->first - h;
  if (fsz >= a) {
    s.insert(make_pair(h - 1, cur->second));
    av += (fsz + 1) / (a + 1);
  }
  if (ssz >= a) {
    s.insert(make_pair(cur->first, h + 1));
    av += (ssz + 1) / (a + 1);
  }
  s.erase(cur);
}
bool check() {
  if (av < k) return true;
  return false;
}
int main(void) {
  while (cin >> n >> k >> a >> m) {
    s.insert(make_pair(n, 1));
    av = (n + 1) / (a + 1);
    int x[m];
    for (int i = 0; i < m; i++) cin >> x[i];
    int f = 0;
    for (int i = 0; i < m; i++) {
      int h = x[i];
      update(h);
      if (check()) {
        cout << i + 1 << "\n";
        f = 1;
        break;
      }
    }
    if (!f) cout << "-1\n";
  }
  return 0;
}
