#include <bits/stdc++.h>
using namespace std;
int a[1000005];
long long sum[1000005] = {0};
double avg[1000005];
vector<int> ans;
double getavg(int l, int r) { return (sum[r] - sum[l]) / 1.0 / (r - l); }
void setin() {
  double ivg1, ivg2;
  if (ans.size() == 2) {
    return;
  }
  ivg1 = getavg(ans[ans.size() - 3], ans[ans.size() - 2]);
  ivg2 = getavg(ans[ans.size() - 2], ans[ans.size() - 1]);
  if (ivg1 <= ivg2)
    return;
  else {
    vector<int>::iterator it;
    it = ans.end() - 2;
    ans.erase(it);
    setin();
  }
}
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  for (int i = 1; i <= n; i++) {
    sum[i] = sum[i - 1] + a[i];
    avg[i] = sum[i] / i;
  }
  ans.push_back(0);
  ans.push_back(1);
  double ivg1, ivg2;
  for (int i = 2; i <= n; i++) {
    ivg1 = getavg(ans[ans.size() - 2], ans[ans.size() - 1]);
    ivg2 = getavg(ans[ans.size() - 1], i);
    if (ivg2 < ivg1) {
      ans[ans.size() - 1] = i;
      setin();
    } else {
      ans.push_back(i);
    }
  }
  int l = ans.size();
  for (int i = 1; i < l; i++) {
    double ivg = getavg(ans[i - 1], ans[i]);
    for (int j = ans[i - 1] + 1; j <= ans[i]; j++) {
      printf("%.9lf\n", ivg);
    }
  }
  return 0;
}
