#include <bits/stdc++.h>
using namespace std;
int n, a, k;
int x[200030], xx[200030];
bool judge(int m) {
  for (int i = 1; i <= m; i++) xx[i] = x[i];
  sort(xx + 1, xx + 1 + m);
  int ans = 0;
  xx[0] = 0;
  for (int i = 1; i <= m; i++) ans += (xx[i] - xx[i - 1]) / (a + 1);
  ans += (n - xx[m] + 1) / (a + 1);
  return ans < k;
}
int main() {
  int m;
  scanf("%d%d%d", &n, &k, &a);
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) scanf("%d", x + i);
  int ans = 1 << 30;
  int l = 1, r = m, mid;
  while (l <= r) {
    mid = (l + r) >> 1;
    if (judge(mid))
      ans = min(ans, mid), r = mid - 1;
    else
      l = mid + 1;
  }
  if (ans == (1 << 30)) ans = -1;
  printf("%d\n", ans);
}
