#include <bits/stdc++.h>
#pragma GCC target("avx2")
using namespace std;
const long long INF =
    (is_same<long long, long long>::value ? 1e18L + 666 : 1e9L + 666);
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
template <class t1, class t2>
bool cmax(t1 &a, const t2 &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class t1, class t2>
bool cmin(t1 &a, const t2 &b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
void run();
signed main() {
  iostream::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  run();
}
bool cmpfrac(const pair<long long, long long> &f1,
             const pair<long long, long long> &f2) {
  return f1.first * f2.second < f2.first * f1.second;
}
void run() {
  long long n;
  cin >> n;
  vector<long long> a(n);
  for (auto &x : a) {
    cin >> x;
  }
  vector<long long> pref(n + 1, 0);
  for (long long i = 0; i < n; ++i) {
    pref[i + 1] = pref[i] + a[i];
  }
  vector<long long> st(1, 0);
  for (long long i = 1; i < n; ++i) {
    st.push_back(i);
    while (((long long)(st).size()) > 1 &&
           cmpfrac({pref[i + 1] - pref[st.back()], i + 1 - st.back()},
                   {pref[i + 1] - pref[st[((long long)(st).size()) - 2]],
                    i + 1 - st[((long long)(st).size()) - 2]})) {
      st.pop_back();
    }
  }
  st.push_back(n);
  cout << fixed << setprecision(9);
  for (long long i = 0; i + 1 < ((long long)(st).size()); ++i) {
    for (long long j = st[i]; j < st[i + 1]; ++j) {
      cout << (long double)(pref[st[i + 1]] - pref[st[i]]) / (st[i + 1] - st[i])
           << '\n';
    }
  }
}
