#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 50;
const long long oo = 1e18;
template <typename T>
void read(T &x) {
  x = 0;
  char c;
  for (c = getchar(); !isdigit(c); c = getchar())
    ;
  for (; isdigit(c); c = getchar()) x = x * 10 + c - '0';
}
int n;
long long T, E, x[N], f[N];
int main(int argc, char *argv[]) {
  read(n), read(E), read(T);
  for (int i = 1; i <= (n); ++i) read(x[i]);
  for (int i = 1; i <= (n); ++i) {
    f[i] = oo;
    for (int j = 0; j < (i); ++j)
      (f[i] > f[j] + max(T, 2 * (x[i] - x[j + 1]))
           ? f[i] = f[j] + max(T, 2 * (x[i] - x[j + 1]))
           : f[i]);
  }
  printf("%lld\n", f[n] + E);
  return 0;
}
