#include <bits/stdc++.h>
using namespace std;
const int maxn = 201000;
int arr[maxn];
set<int> S;
set<int>::iterator it;
set<int>::iterator itb;
set<int>::iterator ite;
int main() {
  int n, k, a;
  cin >> n >> k >> a;
  int m;
  cin >> m;
  for (int i = 1; i <= m; i++) cin >> arr[i];
  S.insert(0);
  S.insert(n + 1);
  int can = (n + 1) / (a + 1);
  int chek = -1;
  for (int i = 1; i <= m; i++) {
    if (S.find(arr[i]) != S.end()) continue;
    S.insert(arr[i]);
    it = S.find(arr[i]);
    it--;
    itb = it;
    it++, it++;
    ite = it;
    it--;
    can += (*it - *itb) / (a + 1);
    can += (*ite - *it) / (a + 1);
    can -= (*ite - *itb) / (a + 1);
    if (can < k) {
      chek = i;
      break;
    }
  }
  cout << chek << endl;
  return 0;
}
