#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target( \
    "avx,avx2,fma,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
int MOD = 1e9 + 7;
const int N = 500000;
const int B = 60;
set<int> sk;
long double pw2[3 * B];
long double solve(int id) {
  sk.insert(id);
  vector<int> lf;
  vector<int> rt;
  rt.push_back(0);
  lf.push_back(0);
  auto it = sk.find(id);
  it++;
  while (it != sk.end() && rt.size() < B) {
    rt.push_back(*it - id);
    it++;
  }
  auto iter = set<int>::reverse_iterator(sk.find(id));
  for (; (int)lf.size() <= B && iter != sk.rend(); iter++)
    lf.push_back(id - *iter);
  long double an1 = 0, an2 = 0, an3 = 0;
  for (int i = 1; i < rt.size(); i++) {
    an1 += (long double)(rt[i] - rt[i - 1]) * pw2[i - 1];
  }
  for (int i = 1; i < lf.size(); i++) {
    an2 += (long double)(lf[i] - lf[i - 1]) * pw2[i - 1];
  }
  an3 = an1 * an2;
  return an3;
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0),
      cout << fixed << setprecision(20);
  pw2[0] = 1;
  for (int i = 1; i < 3 * B; i++) {
    pw2[i] = pw2[i - 1] / 2.0;
  }
  int n;
  cin >> n;
  vector<pair<int, int> > a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i].first;
    a[i].second = i;
  }
  sort(a.begin(), a.end());
  reverse(a.begin(), a.end());
  long double ans = 0;
  sk.insert(-1);
  sk.insert(n);
  for (int i = 0; i < n; i++) {
    ans += (long double)a[i].first * solve(a[i].second) / (long double)n /
           (long double)n;
  }
  cout << ans / 2.0;
}
