#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
char buf[1 << 21], *p1 = buf, *p2 = buf;
inline int gc() {
  return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2)
             ? EOF
             : *p1++;
}
inline int read() {
  int ret = 0, f = 0;
  char c = gc();
  while (!isdigit(c)) {
    if (c == '-') f = 1;
    c = gc();
  }
  while (isdigit(c)) {
    ret = ret * 10 + c - 48;
    c = gc();
  }
  if (f) return -ret;
  return ret;
}
int sign(double x) {
  if (x > 1e8)
    return 1;
  else if (x < -1e8)
    return -1;
  else
    return 0;
}
const int maxn = 1e6 + 10;
int a[maxn];
pair<double, int> st[maxn];
double pre[maxn];
int precnt[maxn];
int top;
int erfen(int l, int r, double val) {
  while (l + 1 < r) {
    int mid = l + r >> 1;
    if ((pre[top] - pre[mid - 1] + val) * 1.0 /
            (precnt[top] - precnt[mid - 1] + 1) <=
        st[mid].first)
      r = mid;
    else
      l = mid;
  }
  return r;
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = (1); i <= (n); i++) {
    scanf("%d", &a[i]);
  }
  st[++top] = make_pair(a[1] * 1.0, 1);
  pre[top] = a[1];
  precnt[top] = 1;
  for (int i = (2); i <= (n); i++) {
    if (a[i] * 1.0 == st[top].first) {
      st[top].second++;
      pre[top] += a[i];
      precnt[top]++;
    } else if (a[i] * 1.0 > st[top].first) {
      st[++top] = make_pair(a[i] * 1.0, 1);
      pre[top] = pre[top - 1] + a[i];
      precnt[top] = precnt[top - 1] + 1;
    } else {
      int id = erfen(0, top + 1, a[i]);
      int cnt = (precnt[top] - precnt[id - 1] + 1);
      double tmp = pre[top] - pre[id - 1] + a[i];
      double evenly = (pre[top] - pre[id - 1] + a[i]) * 1.0 /
                      (precnt[top] - precnt[id - 1] + 1);
      top = id;
      st[top].first = evenly;
      st[top].second = cnt;
      pre[top] = pre[top - 1] + tmp;
      precnt[top] = precnt[top - 1] + cnt;
    }
  }
  for (int i = (1); i <= (top); i++) {
    for (int j = (1); j <= (st[i].second); j++) {
      printf("%.9f\n", st[i].first);
    }
  }
  return 0;
}
