#include <bits/stdc++.h>
using namespace std;
struct Node {
  double p;
  int k;
} x[400010];
int n, l, v1, v2, a[200010];
double s, z[100010];
bool cmp(Node p, Node q) { return p.p < q.p; }
int main() {
  scanf("%d%d%d%d", &n, &l, &v1, &v2);
  s = (double)v2 / (v1 + v2) * l;
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 2; i <= n; i++) a[i] -= a[1];
  a[1] = 0;
  int k = 0;
  for (int i = 1; i <= n; i++) {
    if (a[i] - s < 0) {
      k++;
      x[k].p = a[i] - s + 2 * l;
      x[k].k = 1;
      k++;
      x[k].p = 2 * l;
      x[k].k = -1;
      k++;
      x[k].p = 0;
      x[k].k = 1;
      k++;
      x[k].p = a[i];
      x[k].k = -1;
    } else {
      k++;
      x[k].p = a[i] - s;
      x[k].k = 1;
      k++;
      x[k].p = a[i];
      x[k].k = -1;
    }
  }
  sort(x + 1, x + k + 1, cmp);
  memset(z, 0, sizeof(z));
  int sum = 0;
  x[0].p = 0;
  x[0].k = 0;
  x[k + 1].p = 2 * l;
  x[k + 1].k = 0;
  for (int i = 1; i <= k + 1; i++) {
    if (fabs(x[i].p - x[i - 1].p) > 1e-6) z[sum] += x[i].p - x[i - 1].p;
    sum += x[i].k;
  }
  for (int i = 0; i <= n; i++) printf("%.12lf\n", z[i] / (2 * l));
  return 0;
}
