#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
void print(int i) { printf("%d", i); }
template <class T>
void PI(T i) {
  print(i);
  puts("");
}
template <class T>
void PIS(T i) {
  print(i);
  printf(" ");
}
template <class T>
void PV(T const &v, int N) {
  for (int i = 0; i < int(N); i++) {
    print(v[i]);
    printf("%c", i == N - 1 ? '\n' : ' ');
  }
}
template <class T>
void PV(T const &v) {
  PV(v, ((int)(v).size()));
}
template <class T, class S>
bool has_bit(T mask, S i) {
  return (mask >> i) & 1;
}
long long shift(int i) { return 1ll << i; }
template <class C>
void mini(C &a4, C b4) {
  a4 = min(a4, b4);
}
template <class C>
void maxi(C &a4, C b4) {
  a4 = max(a4, b4);
}
int popcount(int x) { return __builtin_popcount(x); }
int popcount(long long x) { return __builtin_popcountll(x); }
int main() {
  int N, E, T;
  scanf("%d", &N), scanf("%d", &E), scanf("%d", &T);
  vector<int> x(N);
  vector<long long> dp(N + 1, 1e18);
  dp[0] = 0;
  for (int i = 0; i < int(N); i++) {
    scanf("%d", &x[i]);
    for (int j = 0; j < int(i + 1); j++) {
      mini(dp[i + 1], dp[j] + max(T, 2 * (x[i] - x[j])));
    }
  }
  printf("%lld\n", dp[N] + E);
  return 0;
}
