#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, e, t;
int x[100005];
ll f[100005];
ll tr[100005 << 2][2];
void Update(int L, int R, int p, int x, int l, int r, int rt)
{
	if(L <= l && r <=R)
	{
		tr[rt]
	}
}
int main()
{
	scanf("%d%d%d", &n, &e, &t);
	for(int i = 1; i <= n; i++)
	{
		scanf("%d", &x[i]);
	}
	memset(f, 0x3f, sizeof f);
	f[0] = 0;
	for(int i = 1; i <= n; i++)
	{
		for(int j = 0; j < i; j++)
		{
			f[i] = min(f[i], f[j] + max((x[i] - x[j + 1]) * 2, t) + (x[i] - x[j]));
		}
	}
	printf("%lld\n", f[n] + e - x[n]);
	
	
	
	
	return 0;
}