#include <bits/stdc++.h>
using namespace std;
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
template <typename T>
void chmax(T& a, T b) {
  if (a < b) a = b;
}
template <typename T>
void chmin(T& a, T b) {
  if (a > b) a = b;
}
unsigned long long mod = (int)1e9 + 7;
const int MAX = (int)2e5 + 5;
int T = 1;
long long N, E, t;
vector<long long> x;
long long dp[MAX];
long long min_time(int i) {
  if (i == -1) return 0;
  if (dp[i] > 0) return dp[i];
  long long tmp = ((long long)1 << 60);
  for (int j = i - 1; j > -2; j--) {
    chmin(tmp, min_time(j) + max(t, 2 * (x[i] - x[j + 1])));
  }
  return dp[i] = tmp;
}
void solve() {
  cin >> N >> E >> t;
  x.resize(N);
  for (int i = 0; i < N; ++i) cin >> x[i];
  cout << E + min_time(N - 1) << endl;
}
signed main() {
  cout << fixed << setprecision(20);
  for (int i = 0; i < T; ++i) {
    solve();
  }
  return 0;
}
