#include <bits/stdc++.h>
using namespace std;
inline bool compare(pair<double, int> p, pair<double, int> lp,
                    pair<double, int> llp) {
  auto orgA = (lp.first - llp.first) / (lp.second - llp.second);
  auto newA = (p.first - llp.first) / (p.second - llp.second);
  return newA < orgA;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  scanf("%d", &n);
  vector<int> v(n);
  for (auto& x : v) scanf("%d", &x);
  vector<double> AVG(n + 1, 0), SUM(n + 1, 0), ans(n);
  double ts = 0;
  stack<pair<double, int>> s;
  s.push(pair<double, int>(0.0, 0));
  for (int i = 0; i < n; i++) {
    ts += v[i];
    AVG[i + 1] = ts / (i + 1);
    SUM[i + 1] = ts;
    auto p = pair<double, int>(SUM[i + 1], i + 1);
    if (s.top().second == 0) {
      s.push(p);
    } else {
      while (1) {
        auto lp = s.top();
        if (lp.second == 0) {
          s.push(p);
          break;
        }
        s.pop();
        auto llp = s.top();
        if (!compare(p, lp, llp)) {
          s.push(lp);
          s.push(p);
          break;
        }
      }
    }
  }
  vector<int> ord;
  while (!s.empty()) {
    auto p = s.top();
    s.pop();
    ord.push_back(p.second);
  }
  reverse(ord.begin(), ord.end());
  for (int i = 1; i < (int)ord.size(); i++) {
    double avg = SUM[ord[i]] - SUM[ord[i - 1]];
    avg = avg / (ord[i] - ord[i - 1]);
    for (int k = ord[i - 1]; k < ord[i]; k++) ans[k] = avg;
  }
  for (int i = 0; i < n; i++) printf("%.10lf\n", ans[i]);
}
