#include <bits/stdc++.h>
using namespace std;
complex<long long int> convex[1000006];
long long int cross(complex<long long int> a, complex<long long int> b) {
  return a.real() * b.imag() - b.real() * a.imag();
}
int main() {
  long long int n;
  scanf("%lld", &n);
  long long int sum = 0;
  vector<complex<long long int>> vertexs;
  vertexs.push_back(complex<long long int>(0, 0));
  for (long long int i = 0; i < n; i++) {
    long long int tmp;
    scanf("%lld", &tmp);
    sum += tmp;
    vertexs.push_back(complex<long long int>(i + 1, sum));
  }
  convex[0] = vertexs[0];
  long long int vn = 1;
  for (long long int i = 1; i <= n; i++) {
    convex[vn++] = vertexs[i];
    while (vn > 2) {
      if (cross(convex[vn - 1] - convex[vn - 3],
                convex[vn - 2] - convex[vn - 3]) > 0) {
        convex[vn - 2] = convex[vn - 1];
        vn--;
      } else {
        break;
      }
    }
  }
  for (long long int i = 1; i < vn; i++) {
    double len = convex[i].real() - convex[i - 1].real();
    for (long long int j = 0; j < len; j++) {
      printf("%.10lf\n", (convex[i].imag() - convex[i - 1].imag()) / len);
    }
  }
}
