#include <bits/stdc++.h>
using namespace std;
const long long INF = 2e9;
const long double EPS = 1e-8;
int main() {
  int N, E, T;
  cin >> N >> E >> T;
  vector<int> x(N);
  for (int i = 0; i < (int)(N); i++) cin >> x[i];
  if (N > 2000) {
    cout << -1 << endl;
    return 0;
  }
  vector<long long> dp(N + 1, INF);
  dp[0] = 0;
  for (int i = 0; i < (int)(N); i++) {
    for (int j = 0; j < (int)(i + 1); j++) {
      dp[i + 1] = min(dp[i + 1], dp[j] + max(T, 2 * (x[i] - x[j])));
    }
  }
  cout << dp[N] + E << endl;
  return 0;
}
