#include <bits/stdc++.h>
using namespace std;
 
const int MAXN = 1e6 + 100 ;
 
 
long long dp[MAXN] , tmp[MAXN] , nx[MAXN] , a[MAXN] ; 
 
int32_t main(){
	//ios_base::sync_with_stdio(0) ;
	//cin . tie(0) ; cout . tie(0) ; 
 
	int n ; cin >> n ; 
	int e , t ; cin >> e >> t ; 
	for(int i = 0 ; i < n ; i ++)
		cin >> a[i] ; 
	int l = n - 1 ; 
	//cout << "Hir" << endl ; 
	for(int i = n - 1 ; i >= 0 ; i --){
		while(l > 0 && 2 * (a[i] - a[l - 1]) <= t)
			l -- ; 
		nx[i] = l ; 
	}
	//cout << "Hir" << endl ; 
	memset(dp , 63 , sizeof dp) ; 
	memset(tmp , 63 , sizeof tmp) ; 
	dp[0] = 0 ; 
	tmp[0] = -2 * a[0] ;
	//cout << 0 << ' ' << dp[0]<< ' '  << tmp[0]<< ' ' << '\n' ; 
	for(int i = 1 ; i <= n ; i ++){
		dp[i] = t + dp[nx[i - 1]] ;
		if(nx[i - 1]) dp[i] = min(dp[i] , 2 * a[i - 1] + tmp[nx[i - 1] - 1]) ;
		tmp[i] = min(tmp[i - 1] , dp[i] - 2 * a[i]) ; 
		//cout << i << ' ' << dp[i] << ' ' << tmp[i] << '\n' ; 
	}
	cout << dp[n] + e ; 
 
}