#include <bits/stdc++.h>
using namespace std;
struct event {
  long long pos;
  char type;
  bool operator<(const event& other) const {
    if (pos != other.pos) {
      return pos < other.pos;
    }
    if (type != other.type) {
      return type == '-';
    }
    return false;
  }
};
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n;
  long long l, v1, v2;
  cin >> n >> l >> v1 >> v2;
  vector<event> events;
  for (int i = 0; i < n; ++i) {
    long long a;
    cin >> a;
    if (a * (v1 + v2) >= l * v2) {
      events.push_back({(l * 2 - a) * (v1 + v2), '+'});
      events.push_back({l * 2 * (v1 + v2) + l * v2 - a * (v1 + v2), '-'});
    } else {
      events.push_back({0, '+'});
      events.push_back({(l * v2) - a * (v1 + v2), '-'});
      events.push_back({(l * 2 - a) * (v1 + v2), '+'});
      events.push_back({(l * 2) * (v1 + v2), '-'});
    }
  }
  sort((events).begin(), (events).end());
  vector<double> ans(n + 1);
  long long pr = 0;
  int cnt = 0;
  double den = double(l * 2) * (v1 + v2);
  for (event& e : events) {
    if (e.pos == pr) {
      if (e.type == '+') {
        ++cnt;
      } else {
        --cnt;
      }
      continue;
    }
    long long d = e.pos - pr;
    ans[cnt] += double(d) / den;
    pr = e.pos;
    if (e.type == '+') {
      ++cnt;
    } else {
      --cnt;
    }
  }
  long long d = (l * 2) * (v1 + v2) - pr;
  ans[cnt] += double(d) / den;
  cout.precision(20);
  cout << fixed;
  for (int i = 0; i <= n; ++i) {
    cout << ans[i] << "\n";
  }
}
