#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
const int maxn = 200100;
set<int> S;
set<int>::iterator it;
int main() {
  int n, k, a, m, x;
  scanf("%d%d%d", &n, &k, &a);
  int rest = (n + 1) / (a + 1);
  scanf("%d", &m);
  S.insert(0);
  S.insert(n + 1);
  int flag = -1;
  for (int i = 1; i <= m && flag == -1; i++) {
    scanf("%d", &x);
    S.insert(x);
    it = S.lower_bound(x);
    it--;
    int l = *it;
    it = S.upper_bound(x);
    int r = *it;
    rest -= (r - l) / (a + 1);
    rest += (r - x) / (a + 1);
    rest += (x - l) / (a + 1);
    if (rest < k) flag = i;
  }
  printf("%d\n", flag);
  return 0;
}
