#include <bits/stdc++.h>
using namespace std;
const int N = 300100;
struct dui {
  int id, vl;
} a[N];
int ne[N], pre[N], n, st[100], s[100], top1, top2;
bool cmp(dui x, dui y) { return x.vl < y.vl; }
int main() {
  int i, j, k, x;
  long double ans, res, tmp1, tmp2;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i].vl);
    a[i].id = i;
  }
  sort(a + 1, a + n + 1, cmp);
  for (i = 1; i <= n; i++) ne[i] = i + 1, pre[i] = i - 1;
  ans = 0;
  for (i = 1; i <= n; i++) {
    x = a[i].id;
    res = 0;
    s[top1 = 1] = x;
    st[top2 = 1] = x;
    while ((top1 <= 60) && (pre[s[top1]])) s[++top1] = pre[s[top1 - 1]];
    s[++top1] = 0;
    while ((top2 <= 60) && (ne[st[top2]] != n + 1))
      st[++top2] = ne[st[top2 - 1]];
    st[++top2] = n + 1;
    tmp1 = 0;
    tmp2 = 0.5;
    for (j = 1; j < top1; j++) {
      tmp1 += tmp2 * (long double)(s[j] - s[j + 1]);
      tmp2 /= 2.0;
    }
    for (j = 1; j < top2; j++) {
      res += (long double)(st[j + 1] - st[j]) * tmp1;
      tmp1 /= 2.0;
    }
    res = (res * (long double)a[i].vl / (long double)n / (long double)n);
    ans += res;
    ne[pre[x]] = ne[x];
    pre[ne[x]] = pre[x];
  }
  double out = ans;
  printf("%.9f\n", out);
  return 0;
}
