#include <bits/stdc++.h>
using namespace std;
int main() {
  long long int n, k, a;
  cin >> n >> k >> a;
  long long int m;
  cin >> m;
  vector<long long int> x(m);
  for (decltype(0) i = 0; i < m; i++) cin >> x[i];
  set<long long int> starts;
  starts.insert(0);
  unordered_map<long long int, long long int> result;
  result[0] = ((n + 1) / (a + 1));
  long long int shipCounts = result[0];
  for (decltype(0) i = 0; i < m; i++) {
    auto it1 = starts.lower_bound(x[i]);
    it1--;
    long long int prev_start = *it1;
    shipCounts -= result[prev_start];
    result[prev_start] = (x[i] - prev_start) / (a + 1);
    shipCounts += result[prev_start];
    auto it2 = starts.lower_bound(x[i]);
    long long int next_start;
    if (it2 == starts.end())
      next_start = n + 1;
    else
      next_start = *it2;
    result[x[i]] = (next_start - x[i]) / (a + 1);
    shipCounts += result[x[i]];
    starts.insert(x[i]);
    if (shipCounts < k) {
      cout << (i + 1) << "\n";
      return 0;
    }
  }
  cout << "-1"
       << "\n";
  return 0;
}
