#include <bits/stdc++.h>
class in {
  struct It {
    int it;
    const bool rev;
    explicit constexpr It(int it_, bool rev = false) : it(it_), rev(rev) {}
    int operator*() { return it; }
    bool operator!=(It& r) { return it != r.it; }
    void operator++() { rev ? --it : ++it; }
  };
  const It i, n;

 public:
  explicit constexpr in(int n) : i(0), n(n < 0 ? 0 : n) {}
  explicit constexpr in(int i, int n) : i(i, n < i), n(n) {}
  const It& begin() { return i; }
  const It& end() { return n; }
};
using namespace std;
using i64 = long long;
int main() {
  cin.tie(nullptr);
  ios::sync_with_stdio(false);
  int n;
  cin >> n;
  i64 g, t;
  cin >> g >> t;
  vector<i64> a(n, 0LL);
  for (auto& x : a) cin >> x;
  assert(n <= 2000);
  vector<i64> dp(n + 1, 1e18);
  dp[0] = 0LL;
  for (int i : in(n))
    for (int j : in(i + 1))
      dp[i + 1] = min(dp[i + 1], dp[j] + max(t, 2LL * (a[i] - a[j])));
  cout << dp[n] + g << endl;
  return 0;
}
