#include <bits/stdc++.h>
using namespace std;
int n;
int t[300300];
void add(int k) {
  while (k < 300300) t[k]++, k += (k & -k);
}
int sum(int k, int s = 0) {
  while (k) s += t[k], k -= (k & -k);
  return s;
}
int b[300300], id[300300];
bool cmp(int i, int j) { return b[i] > b[j]; }
int pre[300300], nxt[300300];
int a[300];
int main() {
  int i, j, k, s;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) scanf("%d", b + i), id[i] = i;
  sort(id + 1, id + n + 1, cmp);
  double ans = 0;
  double tl, tr, p = 1;
  for (i = 0; i <= n + 1; i++) pre[i] = 0, nxt[i] = 1 + n;
  int mn, mx, mid;
  for (int step = 1; step <= n; step++) {
    i = id[step];
    s = sum(i);
    add(i);
    if (!s) {
      mn = 0, mx = nxt[0];
    } else {
      mn = 0, mx = i - 1;
      while (mn < mx - 1) {
        mid = (mn + mx) / 2;
        if (sum(mid) == s)
          mx = mid;
        else
          mn = mid;
      }
      mn = mx, mx = nxt[mn];
    }
    pre[i] = mn, nxt[mn] = i;
    pre[mx] = i, nxt[i] = mx;
    {
      tr = 0, p = 1;
      a[0] = i, a[1] = nxt[i];
      for (k = 1; k <= 100 && a[k - 1] <= n; k++, p /= 2) {
        tr += p * (a[k] - a[k - 1]);
        a[k + 1] = nxt[a[k]];
      }
    }
    {
      tl = 0, p = 1;
      a[0] = i, a[1] = pre[i];
      for (k = 1; k <= 100 && a[k - 1] >= 0; k++, p /= 2) {
        tl += p * (a[k - 1] - a[k]);
        a[k + 1] = pre[a[k]];
      }
    }
    ans += tr * tl * b[i];
  }
  printf("%.10lf\n", ans / n / n / 2);
  return 0;
}
