#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3fffffff;
const long long int INF = 0x1fffffffffffffff;
const double eps = 1e-12;
string to_str(long long int x) {
  string res;
  while (x) res += ('0' + (x % 10)), x /= 10;
  reverse((res).begin(), (res).end());
  return res;
}
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
int main() {
  int n, e;
  long long int t;
  scanf("%d%d%lld", &n, &e, &t);
  vector<int> a(n);
  for (int i = (0); i < (n); i++) scanf("%d", &a[i]);
  if (n > 2000) {
    printf("どうせCHT");
    return 0;
  }
  long long int dp[2010];
  for (int i = (0); i < (2010); i++) dp[i] = INF;
  dp[0] = 0;
  for (int i = (0); i < (n); i++)
    for (int j = (0); j < (i + 1); j++)
      chmin(dp[i + 1], dp[j] + max(t, (a[i] - a[j]) * 2LL));
  printf("%lld\n", dp[n] + e);
  return 0;
}
