#include <bits/stdc++.h>
using namespace std;
void IO() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
}
const int maxn = 1e6 + 10;
const double eps = 1e-10;
struct node {
  double h;
  int cnt;
};
stack<node> q;
double a[maxn];
int n;
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%lf", &a[i]);
  q.push((node){a[n - 1], 1});
  for (int i = n - 2; i >= 0; i--) {
    if (q.empty()) {
      q.push((node){a[i], 1});
      continue;
    }
    int cnt = 1;
    while (!q.empty() && a[i] > q.top().h - eps) {
      node now = q.top();
      q.pop();
      cnt += now.cnt;
      a[i] = (a[i] * (cnt - now.cnt) + now.h * now.cnt) / cnt;
    }
    while (!q.empty() && fabs(a[i] - q.top().h) < eps) {
      node now = q.top();
      q.pop();
      cnt += now.cnt;
    }
    q.push((node){a[i], cnt});
  }
  while (!q.empty()) {
    node now = q.top();
    q.pop();
    for (int i = 0; i < now.cnt; i++) printf("%.9f\n", now.h);
  }
}
