#include <bits/stdc++.h>
using namespace std;
long long dp[2016];
int main() {
  long long n, e, t;
  cin >> n >> e >> t;
  vector<long long> vx;
  for (long long i = (0); i < (n); ++i) {
    long long a;
    cin >> a;
    vx.push_back(a);
  }
  for (long long i = (0); i < (2016); ++i) dp[i] = 1000000000000000000LL;
  dp[0] = 0;
  dp[1] = t;
  if (n == 1) {
    cout << e + t << endl;
    return 0;
  }
  for (long long i = (2); i < (vx.size() + 1); ++i) {
    dp[i] = dp[i - 1] + t;
    long long low = 0;
    long long high = i - 1;
    while (low < high) {
      long long mid = (high + low) >> 1;
      if (t <= (vx[i - 1] - vx[mid]) * 2) {
        high = mid;
      } else {
        low = mid + 1;
      }
    }
    dp[i] = min(dp[i], dp[low] + max(t, (vx[i - 1] - vx[low]) * 2));
  }
  printf("%lld\n", dp[n] + e);
  return 0;
}
