#include <bits/stdc++.h>
using namespace std;
pair<int, int> pin;
const int maxn = 300005;
inline void read(int &x) {
  x = 0;
  int f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  x *= f;
}
int a[maxn], n, p[maxn], l[maxn], r[maxn];
inline void judge() {
  freopen("in.txt", "r", stdin);
  freopen("out.txt", "w", stdout);
}
inline bool cmp(int x, int y) { return a[x] < a[y]; }
inline void baoli() {
  double ans = 0;
  int b[205];
  for (int i = (1); i <= (n); i++)
    for (int j = (i); j <= (n); j++) {
      int counter = 0;
      for (int k = (i); k <= (j); k++) b[++counter] = a[k];
      sort(b + 1, b + 1 + counter);
      reverse(b + 1, b + 1 + counter);
      for (int k = (1); k <= (counter); k++)
        ans = ans + (double)b[k] / (double)(1 << k);
    }
  printf("%.6lf\n", ans / n / n);
}
int main() {
  read(n);
  for (int i = (1); i <= (n); i++)
    read(a[i]), p[i] = i, l[i] = i - 1, r[i] = i + 1;
  if (n <= 200) {
    baoli();
    return 0;
  }
  sort(p + 1, p + 1 + n, cmp);
  double ans = 0;
  for (int i = (1); i <= (n); i++) {
    int k = p[i];
    double L = 0, R = 0, z = 1;
    int x = k, y = k;
    for (int p = (1); p <= (55); p++) {
      if (x) {
        L += (x - l[x]) * z;
        x = l[x];
      }
      if (y <= n) {
        R += (r[y] - y) * z;
        y = r[y];
      }
      z /= 2;
    }
    ans += a[k] * L * R / 2 / n / n;
    l[r[k]] = l[k];
    r[l[k]] = r[k];
  }
  printf("%.6lf\n", ans);
  return 0;
}
