#include <bits/stdc++.h>
using namespace std;
int n, x;
struct point {
  int x;
  long long y;
};
point a[1000001];
double slope(point p, point q) { return (double)(q.y - p.y) / (q.x - p.x); }
stack<int> s;
stack<double> sl;
double f[1000001];
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &x);
    a[i] = point{i, a[i - 1].y + x};
  }
  s.push(0);
  s.push(1);
  sl.push(slope(a[0], a[1]));
  for (int i = 2; i <= n; i++) {
    while (!sl.empty() && slope(a[s.top()], a[i]) <= sl.top()) {
      s.pop();
      sl.pop();
    }
    sl.push(slope(a[s.top()], a[i]));
    s.push(i);
  }
  s.pop();
  for (int i = n; i; i--) {
    if (i == s.top()) s.pop(), sl.pop();
    f[i] = sl.top();
  }
  for (int i = 1; i <= n; i++) printf("%.10lf\n", f[i]);
  return 0;
}
