#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 50;
const int mod = 1e9 + 7;
long long qp(long long a, long long n) {
  long long res = 1;
  while (n > 0) {
    if (n & 1) res = res * a % mod;
    a = a * a % mod;
    n >>= 1;
  }
  return res;
}
template <class T>
inline bool scan(T& ret) {
  char c;
  int sgn;
  if (c = getchar(), c == EOF) return 0;
  while (c != '-' && (c < '0' || c > '9')) c = getchar();
  sgn = (c == '-') ? -1 : 1;
  ret = (c == '-') ? 0 : (c - '0');
  while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
  ret *= sgn;
  return 1;
}
int n;
long long a[maxn];
int cmp(pair<long long, int> x, pair<long long, int> y) {
  return x.first * y.second >= x.second * y.first;
}
pair<long long, int> comb(vector<pair<long long, int> >& res,
                          pair<long long, int> now) {
  res.back().first += now.first;
  res.back().second += now.second;
  pair<long long, int> tmp = res.back();
  res.pop_back();
  return tmp;
}
int main(int argc, char* argv[]) {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    scanf("%lld", &a[i]);
  }
  vector<pair<long long, int> > res;
  int l = 1;
  while (l <= n) {
    int r = l;
    long long sum = 0;
    sum += a[r++];
    while (r <= n) {
      if (a[r] <= a[r - 1]) {
        sum += a[r++];
      } else
        break;
    }
    pair<long long, int> now = {sum, r - l};
    while (res.size() && cmp(res.back(), now)) {
      now = comb(res, now);
    }
    res.push_back(now);
    l = r;
  }
  for (auto i : res) {
    double tmp = (double)i.first / i.second;
    for (int j = 0; j < i.second; ++j) {
      printf("%.10f\n", tmp);
    }
  }
  return 0;
}
