#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000002;
long long n, k;
int main() {
  ios_base::sync_with_stdio(0);
  int n, k, a;
  cin >> n >> k >> a;
  set<int> st;
  int m;
  cin >> m;
  vector<pair<long long, long long> > moves;
  for (int i = 0; i < m; ++i) {
    int t;
    cin >> t;
    if (st.find(t) == st.end()) {
      moves.push_back(make_pair(t, i + 1));
      st.insert(t);
    }
  }
  st.clear();
  st.insert(0);
  st.insert(n + 1);
  ++a;
  int curShips = (n + 1) / a;
  for (int i = 0; i < moves.size(); ++i) {
    int cur = moves[i].first;
    set<int>::iterator itR = st.lower_bound(cur);
    set<int>::iterator itL = --itR;
    ++itR;
    int prev = (*itR - *itL) / a;
    int ne = (*itR - cur) / a;
    int ne1 = (cur - *itL) / a;
    curShips -= prev - ne - ne1;
    if (curShips < k) {
      cout << moves[i].second;
      return 0;
    }
    st.insert(cur);
  }
  cout << -1;
  return 0;
}
