#include <bits/stdc++.h>
using namespace std;
const int MAX = 100000;
const int INF = 1000000001;
struct event {
  double t;
  int w;
  event() {}
  event(double t, int w) : t(t), w(w) {}
  bool operator<(const event &rhs) const { return t < rhs.t; }
};
int A[MAX];
double res[MAX + 1];
int n, l, v1, v2;
double t, s;
int main(int argc, char *argv[]) {
  scanf("%d %d %d %d", &n, &l, &v1, &v2);
  t = (double)l / (v1 + v2);
  s = t * v2;
  vector<event> E;
  for (int i = 0; i < n; ++i) {
    scanf("%d", A + i);
    E.push_back(event(A[i], -1));
    E.push_back(event((double)A[i] - s, 1));
    if (E.back().t < 0.0) E.back().t += 2.0 * l;
  }
  sort((E).begin(), (E).end());
  int now = 0;
  for (int i = 0; i < 2 * n; ++i)
    if (E[i].w == 1 && E[0].t - s - 1e-8 < E[i].t - 2.0 * l &&
        E[i].t - 2.0 * l < E[0].t)
      ++now;
  E.push_back(E[0]);
  E.back().t += 2.0 * l;
  for (int i = 0; i < 2 * n; ++i) {
    now += E[i].w;
    res[now] += E[i + 1].t - E[i].t;
  }
  for (int i = 0; i <= n; ++i) printf("%.10lf\n", res[i] / (2.0 * l));
  return 0;
}
