#include <bits/stdc++.h>
using namespace std;
template <typename T, typename TT>
ostream &operator<<(ostream &s, pair<T, TT> t) {
  return s << "(" << t.first << "," << t.second << ")";
}
template <typename T>
ostream &operator<<(ostream &s, vector<T> t) {
  s << "{";
  for (int i = 0; i < t.size(); i++)
    s << t[i] << (i == t.size() - 1 ? "" : ",");
  return s << "}" << endl;
}
vector<long long> a;
double wyn[200000];
int main() {
  ios_base::sync_with_stdio(0);
  int n;
  long long l, v1, v2;
  cin >> n >> l >> v1 >> v2;
  a.resize(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    a[i] -= 2 * l;
    a[i] *= (v1 + v2);
  }
  l *= 2 * (v1 + v2);
  for (int i = 0; i < n; i++) a.push_back(a[i] + l);
  a.push_back((1LL << 63) - 1);
  int i1 = 0, i2 = 0;
  int ile = 0;
  long long L = l / (2 * (v1 + v2)) * v2;
  while (a[i2 + 1] - a[i1] <= L) {
    i2++;
    ile++;
  }
  long long x = a[0];
  ;
  ;
  ;
  while (i1 != n) {
    ;
    ;
    ;
    ;
    long long odl = 0;
    if (a[i2 + 1] - (x + L) < a[i1 + 1] - x) {
      ;
      odl = a[i2 + 1] - (x + L);
      ;
      x += odl;
      i2++;
      wyn[ile] += odl * 1.0 / l;
      ile++;
    } else {
      ;
      odl = a[i1 + 1] - (x);
      ;
      x += odl;
      i1++;
      wyn[ile] += odl * 1.0 / l;
      ile--;
    }
  }
  for (int i = 0; i < n + 1; i++)
    cout << setprecision(12) << fixed << wyn[i] << "\n";
  return 0;
}
