#include <bits/stdc++.h>
using namespace std;
int howMany(int n, int a, vector<pair<int, int> > &V, int bound) {
  int last = 0;
  int result = 0;
  for (int i = 0; i < V.size(); ++i) {
    if (V[i].second <= bound) {
      result += (V[i].first - last) / (a + 1);
      last = V[i].first;
    }
  }
  result += (n + 1 - last) / (a + 1);
  return result;
}
int main() {
  int n, k, a;
  cin >> n >> k >> a;
  int m;
  cin >> m;
  vector<pair<int, int> > V(m);
  for (int i = 0; i < m; ++i) {
    cin >> V[i].first;
    V[i].second = i;
  }
  sort(V.begin(), V.end());
  int low = 0, up = m;
  while (low < up) {
    int mid = (low + up) / 2;
    if (howMany(n, a, V, mid) >= k) {
      low = mid + 1;
    } else {
      up = mid;
    }
  }
  if (low == m)
    cout << -1 << endl;
  else
    cout << low + 1 << endl;
}
