#include <bits/stdc++.h>
using namespace std;
struct seg {
  long long v;
  int s;
  bool operator<(const seg &o) const {
    return v - o.v < 0 || (v == o.v && s > o.s);
  }
} t[200005 * 4];
int n, m, v1, v2;
long long a[200005 * 2], l, L, len;
long long ans[200005];
void Init() {
  cin >> n >> l >> v1 >> v2;
  len = l * v2;
  l = l * (v1 + v2);
  L = l;
  for (int i = 1; i <= n; ++i) {
    scanf("%d", a + i);
    a[i] *= (v1 + v2);
    a[n + i] = a[i] + 2 * l;
  }
}
void Work() {
  long long l, r;
  for (int i = 1; i <= 2 * n; ++i) {
    l = a[i] - len;
    r = a[i];
    l = ((l) > (0) ? (l) : (0));
    r = ((r) < (2 * L) ? (r) : (2 * L));
    if (l - r <= 1e-9) {
      t[++m].v = l;
      t[m].s = 1;
      t[++m].v = r;
      t[m].s = -1;
    }
  }
  sort(t + 1, t + 1 + m);
  int now = 0;
  long long last = 0, cnt = 0;
  for (int i = 1; i <= m; ++i) {
    ans[now] += t[i].v - last;
    cnt += t[i].v - last;
    last = t[i].v;
    now += t[i].s;
  }
  ans[0] += 2 * L - last;
  cnt = 0;
  for (int i = 0; i <= n; ++i) {
    printf("%.20lf\n", double(ans[i]) / (2 * L));
    cnt += ans[i] / (2 * L);
  }
}
int main() {
  Init();
  Work();
  return 0;
}
