#include <bits/stdc++.h>
using namespace std;
inline int add(int _a, int _b) {
  if (_a < 0) {
    _a += 1000000007;
  }
  if (_b < 0) {
    _b += 1000000007;
  }
  if (_a + _b >= 1000000007) {
    return _a + _b - 1000000007;
  }
  return _a + _b;
}
inline int mul(int _a, int _b) {
  if (_a < 0) {
    _a += 1000000007;
  }
  if (_b < 0) {
    _b += 1000000007;
  }
  return ((long long int)((long long int)_a * (long long int)_b)) % 1000000007;
}
const int N = 1000000;
int n, ara[N + 10];
double sol[N + 10];
long long int cross(pair<int, long long int> p0, pair<int, long long int> p1,
                    pair<int, long long int> p2) {
  int x1 = p1.first - p0.first;
  long long int y1 = p1.second - p0.second;
  int x2 = p2.first - p0.first;
  long long int y2 = p2.second - p0.second;
  return y2 * (long long int)x1 - (long long int)x2 * y1;
}
void solve() {
  int i, j, sz;
  long long int sum = 0;
  vector<pair<int, long long int> > hull;
  hull.push_back(make_pair(0, 0));
  for (i = 0; i < n; ++i) {
    sum += ara[i];
    while ((sz = hull.size()) > 1 &&
           cross(hull[sz - 2], hull[sz - 1], make_pair(i + 1, sum)) <= 0) {
      hull.pop_back();
    }
    hull.push_back(make_pair(i + 1, sum));
  }
  for (i = 0; i < hull.size(); ++i) {
    int th_x = i == 0 ? 0 : hull[i - 1].first;
    long long int th_y = i == 0 ? 0 : hull[i - 1].second;
    for (j = hull[i].first - 1; j >= (i == 0 ? 0 : hull[i - 1].first); --j) {
      sol[j] = (double)(hull[i].second - th_y) / (hull[i].first - th_x);
    }
  }
  for (i = 0; i < n; i++) {
    printf("%.10f\n", sol[i]);
  }
}
int main() {
  int i, j;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &ara[i]);
  }
  solve();
}
