#include <bits/stdc++.h>
using namespace std;
inline int Max(int a, int b) { return (((b - a) >> (32 - 1)) & (a ^ b)) ^ b; }
inline int Min(int a, int b) { return (((b - a) >> (32 - 1)) & (a ^ b)) ^ a; }
int is_mul_overflow(long long a, long long b) { return LLONG_MAX / a < b; }
int x[2005];
long long dp[2005];
int n, e, t;
long long get(int a, int b) {
  long long d = x[b] - x[a];
  return t > 2LL * d ? t + d : 3LL * d;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  while (cin >> n >> e >> t) {
    for (int i = (1); i <= (n); i++) cin >> x[i];
    for (int i = (0); i <= (n); i++) dp[i] = 10000000000000007;
    x[0] = 0;
    dp[0] = 0;
    for (int i = (1); i <= (n); i++) {
      for (int j = (0); j <= (i - 1); j++) {
        dp[i] = min(dp[i], dp[j] + get(j + 1, i) + x[j + 1] - x[j]);
      }
    }
    cout << dp[n] + e - x[n] << endl;
  }
  return 0;
}
