#include <bits/stdc++.h>
int x[100010];
long long dp[100010];
int main() {
  int N, E, T;
  scanf("%d%d%d", &N, &E, &T);
  for (int i = 1; i <= N; i++) scanf("%d", &x[i]);
  assert(N <= 2000);
  for (int i = 1; i <= N; i++) dp[i] = LLONG_MAX;
  for (int i = 1; i <= N; i++) {
    for (int j = 1; j <= i; j++) {
      int d1 = x[j] - x[j - 1];
      int d2 = 2 * (x[i] - x[j]);
      if (d2 < T) d2 = T;
      int d3 = x[i] - x[j];
      long long v = dp[j - 1] + d1 + d2 + d3;
      if (v < dp[i]) dp[i] = v;
    }
  }
  printf("%lld\n", dp[N] + E - x[N]);
  return 0;
}
