#include <bits/stdc++.h>
using namespace std;
template <class T>
T gcd(T a, T b) {
  return a == 0 ? b : gcd(b % a, a);
}
template <class T>
string tostring(T a) {
  ostringstream os;
  os << a;
  return os.str();
}
int toint(string a) {
  istringstream is(a);
  int p;
  is >> p;
  return p;
}
long long toll(string a) {
  istringstream is(a);
  long long p;
  is >> p;
  return p;
}
double res[100005];
int main() {
  memset(res, 0, sizeof(res));
  int n;
  double L, v1, v2, l;
  cin >> n >> L >> v1 >> v2;
  l = L / (v1 + v2) * v2;
  vector<pair<double, int> > vp;
  double d;
  int cnt = 0;
  for (int i = 0; i < n; i++) {
    cin >> d;
    if (d < l) cnt++;
    vp.push_back(make_pair(d, 1));
    double x = d - l;
    if (x < 0) x += 2 * L;
    vp.push_back(make_pair(x, 3));
  }
  vp.push_back(make_pair(0, 0));
  sort(vp.begin(), vp.end());
  for (int i = 0; i < vp.size(); i++) {
    if (i != vp.size() - 1) {
      if (cnt >= 0) res[cnt] += vp[i + 1].first - vp[i].first;
      cnt += vp[i + 1].second - 2;
    } else {
      res[cnt] += 2 * L - vp[i].first;
    }
  }
  for (int i = 0; i <= n; i++) {
    printf("%.11f\n", res[i] / (2 * L));
  }
}
