#include <bits/stdc++.h>
using namespace std;
static const double EPS = 1e-9;
int N;
long long L, V1, V2;
int main() {
  cin >> N >> L >> V1 >> V2;
  vector<double> cho(N);
  for (int i = 0; i < N; i++) cin >> cho[i];
  double len = L * V2 / (double)(V1 + V2);
  vector<pair<double, double> > p;
  for (__typeof__((cho).begin()) it = (cho).begin(); it != (cho).end(); ++it) {
    double mx = *it + len;
    p.push_back(pair<double, double>(*it, min(2.0 * L, mx)));
    if (mx > 2 * L) p.push_back(pair<double, double>(0.0, mx - 2.0 * L));
  }
  vector<pair<double, int> > q;
  q.push_back(pair<double, int>(0.0, 0));
  for (__typeof__((p).begin()) it = (p).begin(); it != (p).end(); ++it) {
    q.push_back(pair<double, int>((*it).first, 1));
    q.push_back(pair<double, int>((*it).second, -1));
  }
  sort(q.begin(), q.end());
  q.push_back(pair<double, int>(2.0 * L, 0));
  int cnt = 0;
  for (__typeof__((q).begin()) it = (q).begin(); it != (q).end(); ++it) {
    cnt += (*it).second;
    (*it).second = cnt;
    if (cnt > N) {
      cout << "error" << endl;
      return -1;
    }
  }
  vector<double> ans(N + 1);
  for (__typeof__((q).begin()) it = (q).begin(); it != (q).end(); ++it) {
    double next = (it + 1 == q.end() ? 2 * L : (*(it + 1)).first);
    ans[(*it).second] += (next - (*it).first);
  }
  for (__typeof__((ans).begin()) it = (ans).begin(); it != (ans).end(); ++it) {
    printf("%.20lf\n", (*it) / (2 * L));
  }
  return 0;
}
