#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
using namespace std;
constexpr int inf = 1000000010;
constexpr long long INF = 1000000000000000010;
constexpr long double eps = 1e-12;
constexpr long double pi = 3.141592653589793238;
template <class T, class U>
inline bool chmax(T &a, const U &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T, class U>
inline bool chmin(T &a, const U &b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cout << fixed << setprecision(20);
  long long n, e, t;
  cin >> n >> e >> t;
  assert(n <= 2000);
  vector<long long> a(n + 1);
  a[0] = 0;
  for (int i = 1; i <= n; i++) cin >> a[i];
  vector<long long> dp(n + 1, INF);
  dp[0] = 0;
  for (int i = 1; i <= n; i++) {
    for (long long j = 0; j < (i); j++) {
      long long ma = max(2 * (a[i] - a[j + 1]), t);
      chmin(dp[i], dp[j] + ma);
    }
  }
  cout << dp[n] + e << '\n';
}
