//minamoto
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}
using namespace std;
typedef long long ll;
const int N=5e5+5;const ll inf=1e18;
int n,t,e,a[N];ll f[N];
inline ll min(R ll x,R ll y){return x<y?x:y;}
inline ll max(R ll x,R ll y){return x>y?x:y;}
int main(){
	scanf("%d%d%d",&n,&e,&t);
	assert(n<=2000);
	fp(i,1,n)scanf("%d",&a[i]);
	fp(i,1,n){
		f[i]=inf;
		fp(j,1,i)cmin(f[i],f[j-1]+max((a[i]-a[j])<<1,t));
	}
	printf("%lld\n",f[n]+e);
	return 0;
}