#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 10;
const long long MOD = 1e9 + 7;
const long long INF = 1e18;
inline long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
inline int lb(int x) { return x & -x; }
long long qpow(long long base, int n) {
  if (base == 0) return 0;
  long long ans = 1;
  while (n) {
    if (n & 1) ans *= base;
    n >>= 1;
    base *= base;
  }
  return ans;
}
int a[maxn], n;
long long pre[maxn];
double ans[maxn];
inline double func(pair<int, long long> a, pair<int, long long> b) {
  if (a.first > b.first) swap(a, b);
  return (double)(b.second - a.second) / (b.first - a.first);
}
void solve() {
  static pair<int, long long> stk[maxn];
  int sz = 0;
  stk[sz++] = make_pair((0), (0));
  for (int i = (1); i <= (n); ++i) {
    while (sz > 1 && func(make_pair((i), (pre[i])), stk[sz - 1]) <
                         func(stk[sz - 1], stk[sz - 2])) {
      --sz;
    }
    stk[sz++] = make_pair((i), (pre[i]));
  }
  for (int i = 1; i < sz; ++i) {
    double tmp = (double)(stk[i].second - stk[i - 1].second) /
                 (stk[i].first - stk[i - 1].first);
    for (int j = (stk[i - 1].first + 1); j <= (stk[i].first); ++j) ans[j] = tmp;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = (1); i <= (n); ++i) scanf("%d", &a[i]);
  for (int i = (1); i <= (n); ++i) pre[i] = a[i] + pre[i - 1];
  solve();
  for (int i = (1); i <= (n); ++i) printf("%.9lf\n", ans[i]);
}
