#include <bits/stdc++.h>
using namespace std;
struct Node {
  long long val, cnt;
  int next, prev;
};
int N;
Node a[1000000];
int main(int argc, char *argv[]) {
  if (argc == 2 && ((string)argv[1]) == "USE_IO_FILES")
    freopen("in.txt", "r", stdin), freopen("out.txt", "w", stdout);
  ;
  while (scanf("%d", &N) != EOF) {
    for (int i = int(0); i < int(N); i++) {
      scanf("%lld", &a[i].val);
      a[i].next = i + 1;
      a[i].prev = i - 1;
      a[i].cnt = 1;
    }
    int st = 0;
    for (int i = int(0); i < int(N); i++) {
      int idp = a[i].prev;
      while (idp >= 0 && a[idp].val * a[i].cnt >= a[i].val * a[idp].cnt) {
        a[i].val += a[idp].val;
        a[i].cnt += a[idp].cnt;
        a[i].prev = a[idp].prev;
        idp = a[i].prev;
        if (idp >= 0)
          a[idp].next = i;
        else
          st = i;
      }
    }
    while (st < N) {
      double avg = a[st].val * 1.0 / a[st].cnt;
      for (int i = int(0); i < int(a[st].cnt); i++) printf("%.12f\n", avg);
      st = a[st].next;
    }
  }
  return 0;
}
