#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const long long maxn = 1e5 + 7;
const long long maxe = 1e6 + 7;
const long long INF = 1e9 + 7;
const double PI = acos(-1);
int dx[4] = {0, 0, 1, -1};
int dy[4] = {-1, 1, 0, 0};
inline void Max(int &a, int b) {
  if (b > a) a = b;
}
inline void Min(int &a, int b) {
  if (a == -1 || b < a) a = b;
}
int n;
const double eps = 1e-7;
vector<pair<double, int> > V;
double v1, v2;
double L, l;
double ans[maxn];
int sgn(double x) {
  if (abs(x) > eps && x < 0)
    return -1;
  else
    return 1;
}
int main() {
  cin >> n >> L >> v1 >> v2;
  l = L / (v1 + v2) * v2;
  int cnt = 0;
  memset(ans, 0, sizeof(ans));
  for (int i = 0; i < n; i++) {
    double p;
    scanf("%lf", &p);
    V.push_back(make_pair(p, -1));
    double sp = p - l;
    if (sgn(sp) == -1) {
      cnt++;
      V.push_back(make_pair(sp + 2 * L, 1));
    } else
      V.push_back(make_pair(sp, 1));
  }
  V.push_back(make_pair(0.0, -1000));
  V.push_back(make_pair(2 * L, 1000));
  sort(V.begin(), V.end());
  for (int i = 1; i < V.size(); i++) {
    ans[cnt] += V[i].first - V[i - 1].first;
    cnt += V[i].second;
  }
  for (int i = 0; i <= n; i++) printf("%.17f\n", ans[i] / (2 * L));
  return 0;
}
