#include <bits/stdc++.h>
using namespace std;
double ans;
long long N;
vector<pair<double, int> > ar;
set<int> myset;
set<int>::iterator it;
bool comp(const pair<double, int> &a, const pair<double, int> &b) {
  return a.first > b.first;
}
double g(int x) {
  double l = 0, r = 0, div;
  int last;
  myset.insert(ar[x].second);
  last = ar[x].second;
  it = myset.find(ar[x].second);
  div = 1;
  for (int i = 1; i <= 41; i++) {
    it--;
    l += div * (last - *it);
    if (*it == -1) break;
    div /= 2;
    last = *it;
  }
  last = ar[x].second;
  it = myset.find(ar[x].second);
  div = 1;
  for (int i = 1; i <= 41; i++) {
    it++;
    r += div * (*it - last);
    if (*it == N) break;
    div /= 2;
    last = *it;
  }
  return l * r * ar[x].first / 2.0;
}
int main() {
  scanf("%lld", &N);
  ar.resize(N);
  for (int i = 0; i < N; i++) {
    scanf("%lf", &ar[i].first);
    ar[i].second = i;
  }
  sort(ar.begin(), ar.end(), comp);
  myset.insert(-1);
  myset.insert(N);
  for (int i = 0; i < N; i++) ans += g(i);
  printf("%lf\n", ans / (N * N));
  return 0;
}
