#include <bits/stdc++.h>
using namespace std;
double N, L, v1, v2;
map<double, int> beg, stop;
double sum[100010];
double D;
int main() {
  cin >> N >> L >> v1 >> v2;
  D = L / (v1 + v2);
  D *= v2;
  for (int i = 0; i < N; ++i) {
    int P;
    scanf("%d", &P);
    double p = P;
    ++beg[max(0.0, p - D)];
    ++stop[max(0.0, p)];
    p += 2 * L;
    ++beg[max(0.0, p - D)];
    ++stop[max(0.0, p)];
  }
  double last = 0.0;
  int how = 0;
  while (!beg.empty() || !stop.empty()) {
    double CT = 1E18;
    if (!beg.empty()) CT = min(CT, beg.begin()->first);
    if (!stop.empty()) CT = min(CT, stop.begin()->first);
    int st = beg[CT], en = stop[CT];
    beg.erase(CT);
    stop.erase(CT);
    sum[how] += min(CT, 2 * L) - last;
    last = CT;
    if (last > 2 * L) break;
    how += st;
    how -= en;
  }
  if (last < 2 * L) sum[how] += (2 * L - last);
  for (int i = 0; i <= N; ++i) printf("%.12lf\n", sum[i] / (2 * L));
  return 0;
}
