#include <bits/stdc++.h>
using namespace std;
struct event {
  int i, t;
  long long x;
  event() {}
  event(int i, int t, long long x) {
    this->i = i;
    this->t = t;
    this->x = x;
  }
  bool operator<(event e) const { return x < e.x; }
};
const int N = 120000;
int n;
long long l, v1, v2;
long long a[N];
long long f[N];
int en;
event es[N << 2];
int main() {
  scanf("%d %I64d %I64d %I64d", &n, &l, &v1, &v2);
  for (int i = 0; i < n; i++) scanf("%I64d", &a[i]);
  long long t = l / (v1 + v2);
  long long x = l * v2;
  for (int i = 0; i < n; i++) {
    a[i] *= v1 + v2;
  }
  l *= v1 + v2;
  en = 0;
  for (int i = 0; i < n; i++) {
    es[en++] = event(i, +1, a[i]);
    es[en++] = event(i, -1, a[i] - x);
    es[en++] = event(i + n, +1, a[i] + 2 * l);
    es[en++] = event(i + n, -1, a[i] + 2 * l - x);
  }
  sort(es, es + en);
  int x1, x0;
  for (int i = 0; i < en; i++) {
    if (es[i].i == 0 && es[i].t == +1) x0 = i;
    if (es[i].i == n && es[i].t == +1) x1 = i;
  }
  int b = 0;
  for (int i = en - 1; i >= x1; i--) b += es[i].t;
  for (int i = x1 - 1; i >= x0; i--) {
    if (es[i + 1].x - es[i].x > 0) f[b] += es[i + 1].x - es[i].x;
    b += es[i].t;
  }
  for (int i = 0; i <= n; i++) printf("%.20lf\n", (double)f[i] / (2 * l));
  return 0;
}
