#include <bits/stdc++.h>
using namespace std;
int DEBUG = 0;
int Min(int a, int b) { return (a < b ? a : b); }
int Max(int a, int b) { return (a > b ? a : b); }
int Abs(int a) { return (a >= 0 ? a : -a); }
void print1d(int *vec, int M, const char *str = NULL) {
  if (str != NULL) printf("%s ", str);
  for (int i = 0; i < M; i++) {
    if (i > 0) printf(" ");
    printf("%d", vec[i]);
  }
  printf("\n");
}
struct NODE {
  double a;
  int type;
};
int compare_NODE_inc(const void *a_, const void *b_) {
  NODE *a = (NODE *)a_;
  NODE *b = (NODE *)b_;
  if (a->a > b->a)
    return 1;
  else if (a->a < b->a)
    return -1;
  else
    return 0;
}
int main(int argc, char **argv) {
  DEBUG = (argc >= 2) ? atoi(argv[1]) : 0;
  int n;
  double L, v1, v2;
  cin >> n >> L >> v1 >> v2;
  int a[n + 1];
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  double d = L * v2 / (v1 + v2);
  if (DEBUG) {
    cout << "n= " << n << " L= " << L << " d= " << d << endl;
  }
  NODE node[2 * n + 1];
  for (int i = 1; i <= n; i++) {
    node[i].a = a[i];
    node[i].type = 1;
    node[i + n].a = a[i] - d;
    node[i + n].type = 2;
    if (node[i + n].a <= 0) node[i + n].a += 2 * L;
  }
  qsort(node + 1, 2 * n, sizeof(NODE), compare_NODE_inc);
  node[2 * n + 1].a = 2 * L;
  node[2 * n + 1].type = 1;
  if (DEBUG) {
    for (int i = 1; i <= 2 * n + 1; i++) {
      cout << "node[" << i << "]: a= " << node[i].a << " type= " << node[i].type
           << endl;
    }
  }
  double width[n + 1];
  for (int i = 0; i <= n; i++) width[i] = 0;
  int cnt = 0;
  for (int i = 1; i <= n; i++) {
    if (a[i] <= d) {
      cnt++;
    } else {
      break;
    }
  }
  if (DEBUG) {
    cout << "cnt= " << cnt << endl;
  }
  double start = 0;
  for (int i = 1; i <= 2 * n + 1; i++) {
    width[cnt] += node[i].a - start;
    if (DEBUG) {
      cout << "width[" << cnt << "]= " << width[cnt] << endl;
    }
    if (node[i].type == 1) {
      cnt--;
    } else {
      cnt++;
    }
    start = node[i].a;
  }
  for (int i = 0; i <= n; i++) {
    printf("%.30f\n", width[i] / 2.0 / L);
  }
  return 0;
}
