#include <bits/stdc++.h>
using namespace std;
int ab;
int b[300000];
vector<int> ld[300000], rd[300000];
int main() {
  ios_base::sync_with_stdio(false);
  cin >> ab;
  for (int i = 0; i < ab; i++) {
    cin >> b[i];
    b[i] = max(b[i], 0);
    rd[i].push_back(i);
    ld[i].push_back(i);
  }
  set<pair<int, int> > s;
  for (int i = 0; i < ab; i++) {
    set<pair<int, int> >::iterator it = s.upper_bound(make_pair(b[i], i));
    vector<pair<int, int> > tmp;
    for (set<pair<int, int> >::iterator j = s.begin(); j != it; j++) {
      rd[j->second].push_back(i);
      if (rd[j->second].size() >= 38) tmp.push_back(*j);
    }
    for (int j = 0; j < tmp.size(); j++) s.erase(tmp[j]);
    s.insert(make_pair(b[i], i));
  }
  s.clear();
  for (int i = ab - 1; i >= 0; i--) {
    set<pair<int, int> >::iterator it = s.upper_bound(make_pair(b[i], i));
    vector<pair<int, int> > tmp;
    for (set<pair<int, int> >::iterator j = s.begin(); j != it; j++) {
      ld[j->second].push_back(i);
      if (ld[j->second].size() >= 38) tmp.push_back(*j);
    }
    for (int j = 0; j < tmp.size(); j++) s.erase(tmp[j]);
    s.insert(make_pair(b[i], i));
  }
  for (int i = 0; i < ab; i++) {
    ld[i].push_back(-1);
    rd[i].push_back(ab);
  }
  long double c_ans = 0;
  for (int i = 0; i < ab; i++) {
    long double c_accum = 0;
    for (int j = 0; j <= 38; j++) {
      long long accum = 0;
      for (int k = 0; k <= j; k++) {
        if (ld[i].size() <= k + 1 || rd[i].size() <= j - k + 1) continue;
        long long lsz = ld[i][k] - ld[i][k + 1],
                  rsz = rd[i][(j - k) + 1] - rd[i][j - k];
        ;
        accum += (lsz * rsz);
      }
      c_accum += accum / ((long double)(1LL << (j + 1)));
    }
    c_ans += (c_accum)*b[i];
  }
  cout.precision(60);
  cout << c_ans / (((long long)ab) * ab);
}
