#include <bits/stdc++.h>
using namespace std;
long long ts, tf, t, fila[100100], prox, resp = -1, menor = (1LL << 60);
int n;
bool non_zero = false;
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0);
  cin >> ts >> tf >> t >> n;
  prox = ts;
  if (n == 0) {
    cout << ts << "\n";
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    cin >> fila[i];
    if (fila[i] > 0) {
      long long atd = max(fila[i] - 1, prox);
      if (atd + t <= tf and atd - (fila[i] - 1) < menor) {
        resp = fila[i] - 1;
        menor = atd - (fila[i] - 1);
      }
    }
    long long atd = max(fila[i], prox);
    if (atd + t <= tf) prox = atd + t;
  }
  if (prox + t <= tf) {
    resp = prox;
    menor = 0;
  }
  if (fila[1] > ts) {
    cout << ts << "\n";
    return 0;
  }
  cout << resp << "\n";
  return 0;
}
