#include <bits/stdc++.h>
#pragma warning(disable : 4996)
using namespace std;
struct node {
  int num;
  double val;
  node(int num, double val) : num(num), val(val) {}
  node() {}
};
stack<node> p;
double eps = 1e-10;
int sgn(double p, double q) {
  if (p - q > eps) return 1;
  if (p - q < -eps) return -1;
  return 0;
}
double ans[1000010];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    int tmp;
    scanf("%d", &tmp);
    if (p.empty())
      p.push(node(1, tmp));
    else {
      node now = node(1, tmp);
      while (!p.empty() && sgn(p.top().val, now.val) == 1) {
        now.val = (p.top().val * p.top().num + now.val * now.num) /
                  (p.top().num + now.num);
        now.num += p.top().num;
        p.pop();
      }
      p.push(now);
    }
  }
  int pos = n;
  while (!p.empty()) {
    for (int i = 1; i <= p.top().num; i++) {
      ans[pos--] = p.top().val;
    }
    p.pop();
  }
  for (int i = 1; i <= n; i++) {
    printf("%.10f\n", ans[i]);
  }
  return 0;
}
