#include <bits/stdc++.h>
using namespace std;
const int inf = (1 << 30) - 1;
const long long linf = (1ll << 62) - 1;
int n, l, t;
vector<int> a;
long double ans = 0;
inline int getCount(int ll, int rr) {
  if (rr < l) {
    ll = lower_bound((a).begin(), (a).end(), ll) - a.begin();
    rr = upper_bound((a).begin(), (a).end(), rr) - a.begin();
    return rr - ll;
  }
  return getCount(ll, l - 1) + getCount(0, rr - l);
}
int main() {
  assert(scanf("%d%d%d", &n, &l, &t));
  a.resize(n);
  for (int i = 0; i < n; i++) assert(scanf("%d", &a[i]));
  t *= 2;
  for (int i = 0; i < n; i++) ans += (t / l) * ((n - 1) / 2.0);
  t %= l;
  for (int i = 0; i < n; i++) ans += (getCount(a[i], a[i] + t) - 1) / 2.0;
  cout.precision(20);
  cout << fixed << ans / 2 << '\n';
  return 0;
}
