#include <bits/stdc++.h>
using namespace std;
pair<double, int> a[400500];
double res[100500];
bool doubleEqual(double a, double b) { return fabs(a - b) < 1e-9; }
bool doubleLessOrEqual(double a, double b) {
  return a < b || doubleEqual(a, b);
}
bool doubleLess(double a, double b) { return a < b && !doubleEqual(a, b); }
int main() {
  int n;
  double L, v1, v2;
  scanf("%d %lf %lf %lf", &n, &L, &v1, &v2);
  double L2 = L * 2;
  double L_ = L * v2 / (v1 + v2);
  int d = 0;
  for (int i = 0; i < n; i++) {
    scanf("%lf", &a[i].first);
    if (doubleLess(a[i].first, L_)) {
      d++;
    }
    a[i].second = 1;
    a[i + n].first = a[i].first - L_;
    a[i + n].second = -1;
  }
  int N = 2 * n;
  sort(a, a + N);
  for (int i = 0; i < N; i++) {
    a[i + N] = a[i];
    a[i + N].first += L2;
  }
  sort(a, a + 2 * N);
  int s0 = 0;
  while (doubleLess(a[s0].first, 0)) s0++;
  s0++;
  for (int start = s0; true; start++) {
    d -= a[start - 1].second;
    res[d] += a[start].first - a[start - 1].first;
    if (doubleEqual(a[start].first - a[s0 - 1].first, L2)) {
      break;
    }
  }
  for (int i = 0; i <= n; i++) {
    res[i] /= L2;
  }
  for (int i = 0; i <= n; i++) {
    printf("%.10lf\n", res[i]);
  }
  return 0;
}
