#include <bits/stdc++.h>
using namespace std;
int n, k, a, m, arr[200005];
bool check(int mid) {
  bool draw[200005] = {0};
  for (int i = 1; i <= mid; i++) draw[arr[i]] = 1;
  int tmp = 0, counter = 0;
  for (int i = 1; i <= n && counter < k; i++) {
    if (draw[i] == 0) {
      tmp++;
    } else {
      tmp = 0;
    }
    if (tmp == a) {
      counter++;
      i++;
      tmp = 0;
    }
  }
  if (counter == k) return 0;
  return 1;
}
int main() {
  cin >> n >> k >> a >> m;
  for (int i = 1; i <= m; i++) cin >> arr[i];
  int l = 1, h = m, mid = 0, ans = 0;
  while (l <= h) {
    mid = l + (h - l) / 2;
    if (check(mid)) {
      ans = mid;
      h = mid - 1;
      ;
    } else
      l = mid + 1;
  }
  cout << (ans == 0 ? -1 : ans) << endl;
  return 0;
}
