#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC target ("avx")
#pragma GCC target ("avx2")
#pragma GCC target ("fma")
#pragma GCC optimize ("Ofast")
#pragma GCC optimization ("unroll-loops, no-stack-protector")
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define ll long long
#define ull unsigned long long
#define ld long double
#define pii pair <int, int>
#define pll pair <ll, ll>
#define pci pair <char, int>
#define pld pair <ld, ld>
#define ppld pair <pld, pld>
#define ppll pair <pll, pll>
#define pldl pair <ld, ll>
#define vll vector <ll>
#define vvll vector <vll>
#define vpll vector <pll>
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define fi first
#define se second
#define mll map <ll, ll>
#define fastmap gp_hash_table
#define cd complex <double>
#define vcd vector <cd>
#define PI 3.14159265358979
#define ordered_set tree <ll, null_type, less <ll>, rb_tree_tag, tree_order_statistics_node_update>
#pragma 03
using namespace std;
using namespace __gnu_pbds;
// hj cho minh bulli bai nay
ll dp[200005], a[200005];
int main(){
	fastio;
	ll n, e, t; cin >> n >> e >> t;
	for (ll i = 1; i <= n; i++) cin >> a[i];
	// dp[i]: shortest time to clear first i candies.
	dp[0] = 0;
	for (ll i = 1; i <= n; i++){
		dp[i] = 1e18;
		for (ll j = 0; j < i; j++) dp[i] = min(dp[i], dp[j] + max(2 * (a[i] - a[j + 1]), t) + a[i] - a[j]);
	}
	// hj, optimize nao
	// 2 segtrees: one record dp[j] - 2 * a[j + 1] - a[j], one record dp[j] - a[j].
	
	cout << dp[n] + (e - a[n]) << endl;
}