#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
using pli = pair<ll, int>;
const int INF = 0x3f3f3f3f, N = 1e6 + 5;
const ll LINF = 1e18 + 5;
int n, a[N];
struct node {
  int l, r;
  double v;
};
deque<node> dq;
bool ok() {
  auto y = dq.back();
  dq.pop_back();
  auto x = dq.back();
  dq.pop_back();
  if (x.v >= y.v) {
    dq.push_back(
        {x.l, y.r,
         (x.v * (x.r - x.l + 1) + y.v * (y.r - y.l + 1)) / (y.r - x.l + 1)});
    return 1;
  }
  dq.push_back(x);
  dq.push_back(y);
  return 0;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    dq.push_back({i, i, (double)a[i]});
    while ((int)dq.size() > 1 && ok())
      ;
  }
  for (auto x : dq)
    for (int i = x.l; i <= x.r; i++) printf("%.10f\n", x.v);
  return 0;
}
