#include <bits/stdc++.h>
using namespace std;
int banyak, putar, waktu;
int jarak[1000005], balik[1000005];
int main() {
  scanf("%d %d %d", &banyak, &putar, &waktu);
  for (int i = 0; i < banyak; ++i) {
    scanf("%d", &jarak[i]);
    balik[i] = jarak[i] + putar;
  }
  double jawab = 0.0;
  double lap = (double)(waktu / putar);
  waktu %= putar;
  for (int i = 1; i < banyak; ++i) {
    jawab += lap * (double)i;
    if (jarak[i] - jarak[0] <= 2 * waktu)
      jawab += (double)i / 4.0;
    else if (jarak[i] - jarak[i - 1] > 2 * waktu)
      jawab += 0.0;
    else {
      int kiri = 0;
      int kanan = i - 1;
      while (kanan - kiri > 1) {
        int tengah = (kanan + kiri) / 2;
        if (jarak[i] - jarak[tengah] > 2 * waktu)
          kiri = tengah;
        else
          kanan = tengah;
      }
      jawab += (double)(i - kanan) / 4.0;
    }
    if (jarak[i] - jarak[0] + putar <= 2 * waktu)
      jawab += (double)i / 4.0;
    else if (jarak[i] - jarak[i - 1] + putar > 2 * waktu)
      jawab += 0.0;
    else {
      int kiri = 0;
      int kanan = i - 1;
      while (kanan - kiri > 1) {
        int tengah = (kanan + kiri) / 2;
        if (jarak[i] - jarak[tengah] + putar > 2 * waktu)
          kiri = tengah;
        else
          kanan = tengah;
      }
      jawab += (double)(i - kanan) / 4.0;
    }
    if (balik[i - 1] - jarak[i] <= 2 * waktu)
      jawab += (double)i / 4.0;
    else if (balik[0] - jarak[i] > 2 * waktu)
      jawab += 0.0;
    else {
      int kiri = 0;
      int kanan = i - 1;
      while (kanan - kiri > 1) {
        int tengah = (kanan + kiri) / 2;
        if (balik[tengah] - jarak[i] <= 2 * waktu)
          kiri = tengah;
        else
          kanan = tengah;
      }
      jawab += (double)(kiri + 1) / 4.0;
    }
    if (balik[i - 1] - jarak[i] + putar <= 2 * waktu)
      jawab += (double)i / 4.0;
    else if (balik[0] - jarak[i] + putar > 2 * waktu)
      jawab += 0.0;
    else {
      int kiri = 0;
      int kanan = i - 1;
      while (kanan - kiri > 1) {
        int tengah = (kanan + kiri) / 2;
        if (balik[tengah] - jarak[i] + putar <= 2 * waktu)
          kiri = tengah;
        else
          kanan = tengah;
      }
      jawab += (double)(kiri + 1) / 4.0;
    }
  }
  printf("%.6lf\n", jawab);
  return 0;
}
