#include <bits/stdc++.h>
using namespace std;
const int maxn = 200005;
const int inf = (int)1e9 + 7;
int n, k, a;
int m;
int pos[maxn];
set<pair<int, int> > s;
int main() {
  while (cin >> n >> a >> k) {
    cin >> m;
    for (int i = 0; i < m; ++i) cin >> pos[i];
    s.clear();
    s.insert(make_pair(1, n));
    int sum = (n + 1) / (k + 1);
    int ans = -1;
    for (int i = 0; i < m; ++i) {
      set<pair<int, int> >::iterator it = s.upper_bound(make_pair(pos[i], inf));
      if (it != s.begin()) --it;
      int l = it->first;
      int r = it->second;
      s.erase(*it);
      int len = r - l + 1;
      int num = (len + 1) / (k + 1);
      int numl, numr;
      numl = numr = 0;
      if (pos[i] - 1 >= l) {
        numl = (pos[i] - l + 1) / (k + 1);
        s.insert(make_pair(l, pos[i] - 1));
      }
      if (r >= pos[i] + 1) {
        numr = (r - pos[i] + 1) / (k + 1);
        s.insert(make_pair(pos[i] + 1, r));
      }
      if (numl + numr < num) {
        sum -= num - numl - numr;
      }
      if (sum < a) {
        ans = i + 1;
        break;
      }
    }
    cout << ans << endl;
  }
  return 0;
}
