#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using VI = vector<int>;
using VVI = vector<VI>;
using VL = vector<LL>;
using VVL = vector<VL>;
using VD = vector<double>;
using VVD = vector<VD>;
using PII = pair<int, int>;
using PDD = pair<double, double>;
using PLL = pair<LL, LL>;
using VPII = vector<PII>;
const int INF = 1e9;
const int MOD = INF + 7;
const LL LLINF = 1e18;
int N, E, T;
VI x;
int main(void) {
  scanf("%d%d%d", &N, &E, &T);
  x.resize(N);
  assert(N <= 2000);
  for_each(begin((x)), end((x)), [](int &e) { scanf("%d", &e); });
  VL dp(N + 1, LLINF);
  dp[0] = 0;
  for (int(i) = 0; (i) < (N); (i)++) {
    for (int(j) = (i); (j) < (N); (j)++) {
      int dis = x[j] - x[i];
      dp[j + 1] = min(dp[j + 1], dp[i] + max(T, dis * 2));
    }
  }
  cout << dp[N] + E << endl;
}
