#include <bits/stdc++.h>
using namespace std;
inline int Max(int a, int b) { return (((b - a) >> (32 - 1)) & (a ^ b)) ^ b; }
inline int Min(int a, int b) { return (((b - a) >> (32 - 1)) & (a ^ b)) ^ a; }
int is_mul_overflow(long long a, long long b) { return LLONG_MAX / a < b; }
int x[2005];
long long dp[2005][2005];
int n, e, t;
long long get(int a, int b) {
  int d = x[b] - x[a];
  return t > 2 * d ? t - d : d + d;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  while (cin >> n >> e >> t) {
    for (int i = (1); i <= (n); i++) cin >> x[i];
    for (int i = (0); i <= (n); i++)
      for (int j = (0); j <= (n); j++) dp[i][j] = 1000000000000007;
    x[0] = 0;
    dp[0][0] = 0;
    for (int i = (1); i <= (n); i++) {
      for (int j = (0); j <= (i - 1); j++) {
        dp[i][j] = min(dp[i][j], dp[i - 1][j] + x[i] - x[i - 1]);
        dp[i][i] = min(dp[i][i], dp[i][j] + get(j + 1, i));
      }
    }
  }
  return 0;
}
