#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = 300010;
const int TINY = 1e-13;
int N;
double b[MAXN];
pair<double, int> first[MAXN];
const int MAXS = 30;
int Ls, Rs;
int L[MAXS], R[MAXS];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout << setprecision(12) << fixed;
  cin >> N;
  for (int i = 0; i < N; i++) {
    cin >> b[i];
    b[i] += i * TINY;
  }
  for (int i = 0; i < N; i++) first[i] = make_pair(b[i], i);
  sort(first, first + N);
  multiset<int> greater;
  double ans = 0;
  for (int i = N - 1; i >= 0; i--) {
    Ls = Rs = 0;
    multiset<int>::iterator it = greater.lower_bound(first[i].second);
    while (it != greater.begin() && Ls < MAXS) {
      it--;
      L[Ls++] = *it;
    }
    if (Ls < MAXS) L[Ls++] = -1;
    for (it = greater.upper_bound(first[i].second);
         it != greater.end() && Rs < MAXS; it++)
      R[Rs++] = *it;
    if (Rs < MAXS) R[Rs++] = N;
    int prevl = first[i].second;
    double coef = 0.5;
    double sa = 0;
    for (int j = 0; j < Ls; j++) {
      sa += coef * double(prevl - L[j]);
      prevl = L[j];
      coef *= 0.5;
    }
    int prevr = first[i].second;
    coef = 1;
    for (int j = 0; j < Rs; j++) {
      ans += first[i].first * coef * double(R[j] - prevr) * sa;
      prevr = R[j];
      coef *= 0.5;
    }
    greater.insert(first[i].second);
  }
  cout << ans / (N * double(N)) << endl;
  return 0;
}
