#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
using ll = long long;
using ull = unsigned long long;
using pli = pair<ll, int>;
using pii = pair<int, int>;
constexpr ll mod = 1e9 + 7;
constexpr int N = 1000010;
int n;
ll a[N];
struct node {
  int l, r;
  ll s;
  bool operator<(const node &o) const {
    return s * (o.r - o.l + 1) < o.s * (r - l + 1);
  }
  bool operator>(const node &o) const {
    return s * (o.r - o.l + 1) > o.s * (r - l + 1);
  }
  node operator+(const node &o) const {
    node res;
    res.l = min(l, o.l);
    res.r = max(r, o.r);
    res.s = s + o.s;
    return res;
  }
};
stack<node> q;
void insert(int k) {
  node now = {k, k, a[k]};
  while (q.size() && (q.top() + now) < q.top()) {
    now = now + q.top();
    q.pop();
  }
  q.push(now);
}
int main() {
  int T = 1;
  while (T--) {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) scanf("%lld", &a[i]);
    for (int i = 1; i <= n; i++) insert(i);
    vector<double> ans;
    while (q.size()) {
      node t = q.top();
      q.pop();
      for (int i = t.l; i <= t.r; i++)
        ans.push_back((double)t.s / double(t.r - t.l + 1));
    }
    reverse(ans.begin(), ans.end());
    for (double t : ans) printf("%.9lf\n", t);
  }
  return 0;
}
