#include <bits/stdc++.h>
using namespace std;
long long rdtsc() {
  long long tmp;
  asm("rdtsc" : "=A"(tmp));
  return tmp;
}
inline int myrand() { return abs((rand() << 15) ^ rand()); }
inline int rnd(int x) { return myrand() % x; }
const int maxn = (int)3e5;
int a[maxn];
pair<int, int> ps[maxn];
double res[maxn];
bool solve() {
  int n;
  if (scanf("%d", &n) < 1) return 0;
  for (int i = 0; i < n; ++i) scanf("%d", &a[i]), ps[i] = make_pair(a[i], i);
  sort(ps, ps + n);
  for (int i = 0; i < n; ++i) res[i] = (double)a[i] / 2.0 / n / n;
  for (int rev = 0; rev < 2; ++rev) {
    set<int> poss;
    poss.insert(-1);
    poss.insert(n);
    for (int i = n - 1; i >= 0; --i) {
      int pos = ps[i].second;
      if (rev) pos = n - 1 - pos;
      set<int>::iterator iter = poss.lower_bound(pos);
      double cur = 0, two = 1.0;
      int last = pos;
      for (int coef = 0; coef < 30 && iter != poss.end();
           ++coef, ++iter, two /= 2) {
        cur += two * (*iter - last);
        last = *iter;
      }
      res[ps[i].second] *= cur;
      poss.insert(pos);
    }
  }
  double ans = 0;
  for (int i = 0; i < n; ++i) ans += res[i];
  printf("%.18lf\n", ans);
  return 1;
}
int main() {
  srand(rdtsc());
  while (1) {
    if (!solve()) break;
  }
  return 0;
}
