#include <bits/stdc++.h>
using namespace std;
const long double eps = 1e-9;
struct event {
  long double x;
  bool f;
  int num;
  event() { x = 0, f = 0, num = 0; }
  event(long double _x, bool _f, int _num) { x = _x, f = _f, num = _num; }
  bool operator<(const event& a) const {
    if (abs(x - a.x) > eps) return a.x - x > eps;
    if (f != a.f) return f < a.f;
    return num < a.num;
  }
};
event e[500010];
int sz = 0;
int n, l, v1, v2, a;
long double x1, x2, q;
int k = 0;
long double x = 0;
long double ans[100010];
int main() {
  cin >> n >> l >> v1 >> v2;
  q = l - ((long double)l) / (v1 + v2) * v1;
  for (int(i) = 0; (i) < (int)(n); ++(i)) {
    scanf("%d", &a);
    x2 = a;
    x1 = a - q;
    e[sz++] = event(x2, 1, i);
    if (x1 > -eps)
      e[sz++] = event(x1, 0, i);
    else {
      if (x2 - (x1 + 2 * l) > -eps)
        k++;
      else {
        e[sz++] = event(2 * l + x1, 0, i);
        e[sz++] = event(0, 0, n + i);
        e[sz++] = event(2 * l, 1, n + i);
      }
    }
  }
  sort(e, e + sz);
  for (int(i) = 0; (i) < (int)(sz); ++(i)) {
    ans[k] += e[i].x - x;
    if (e[i].f)
      k--;
    else
      k++;
    x = e[i].x;
  }
  ans[k] += 2 * l - x;
  for (int(i) = 0; (i) < (int)(n + 1); ++(i))
    printf("%.15lf\n", double(ans[i] / (2 * l)));
  return 0;
}
