#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 5;
long long N, A[MAXN], S[MAXN];
double ans[MAXN];
struct Point {
  long long x, y;
};
Point base, P[MAXN];
vector<Point> st;
int ccw(const Point &a, const Point &b, const Point &c) {
  long long t =
      a.x * b.y + b.x * c.y + c.x * a.y - b.x * a.y - c.x * b.y - a.x * c.y;
  if (t > 0) return 1;
  if (t < 0) return -1;
  return 0;
}
long long dis(const Point &a, const Point &b) {
  return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);
}
struct cmp {
  bool operator()(const Point &a, const Point &b) {
    if (ccw(base, a, b) != 0) return ccw(base, a, b) > 0;
    return dis(base, a) < dis(base, b);
  }
};
int main() {
  scanf("%lld", &N);
  for (int i = 1; i <= N; i++) scanf("%lld", &A[i]), S[i] = S[i - 1] + A[i];
  for (int i = 1; i <= N; i++) P[i] = {i, S[i]};
  sort(P + 1, P + 1 + N, cmp());
  st.push_back(base);
  for (int i = 1; i <= N; i++) {
    while (st.size() >= 2 && ccw(st[st.size() - 2], st.back(), P[i]) <= 0)
      st.pop_back();
    st.push_back(P[i]);
  }
  for (int i = 0; i + 1 < st.size(); i++) {
    Point cur = st[i], nxt = st[i + 1];
    if (nxt.x < cur.x) break;
    double avg = (double)(nxt.y - cur.y) / (double)(nxt.x - cur.x);
    for (int j = cur.x + 1; j <= nxt.x; j++) ans[j] = avg;
  }
  for (int i = 1; i <= N; i++) printf("%.9f\n", ans[i]);
}
