#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, L, v1, v2;
  cin >> n >> L >> v1 >> v2;
  vector<unsigned long long> a(2 * n);
  for (int i = 0; i < n; ++i) {
    unsigned long long temp;
    cin >> temp;
    a[i] = temp;
    a[i + n] = temp + 2 * L;
  }
  long double runtime = L / ((long double)(v1 + v2));
  long double runlen = L * ((long double)v2) / ((long double)v1 + v2);
  vector<pair<long double, int> > otr;
  int candycnt = 0;
  for (int i = 0; i < a.size(); ++i) {
    if (a[i] - runlen + 1e-9 < 0) {
      ++candycnt;
    } else {
      otr.push_back(make_pair(a[i] - runlen, 1));
    }
    otr.push_back(make_pair(a[i], -1));
  }
  sort(otr.begin(), otr.end());
  long double cp = 0;
  int i = 0;
  vector<long double> res(n + 1, 0);
  while (cp < 2 * L) {
    long double zz = cp;
    while (fabs(otr[i].first - zz) < 1e-9) {
      zz = otr[i].first;
      candycnt += otr[i++].second;
    }
    long double np = otr[i].first;
    if (np > 2 * L) np = 2 * L;
    if (candycnt <= n) {
      res[candycnt] += np - cp;
    }
    cp = np;
  }
  cout << fixed << setprecision(15);
  for (int i = 0; i < n + 1; ++i) {
    cout << (res[i] / (2 * L)) << endl;
  }
  return 0;
}
