#include <bits/stdc++.h>
using namespace std;
struct Node {
  double junzhi;
  int geshu;
};
stack<Node> s;
stack<double> ss;
void f(double a, int b) {
  if (s.empty()) {
    s.push({a, b});
  } else if (a <= s.top().junzhi) {
    double a1 = s.top().junzhi;
    int b1 = s.top().geshu;
    s.pop();
    f((a * b + a1 * b1) / (b + b1), b + b1);
  } else {
    s.push({a, b});
  }
}
int main() {
  int n;
  scanf("%d", &n);
  double x;
  for (int i = 0; i < n; i++) {
    scanf("%lf", &x);
    if (s.empty()) {
      s.push({x, 1});
    } else {
      if (x <= s.top().junzhi) {
        double a = s.top().junzhi;
        int b = s.top().geshu;
        s.pop();
        f((a * b + x) / (b + 1), b + 1);
      } else {
        s.push({x, 1});
      }
    }
  }
  while (!s.empty()) {
    int a = s.top().geshu;
    for (int i = 0; i < a; i++) {
      ss.push(s.top().junzhi);
    }
    s.pop();
  }
  while (!ss.empty()) {
    printf("%.9f\n", ss.top());
    ss.pop();
  }
}
