#include <bits/stdc++.h>
using namespace std;

#define int long long
typedef vector<int> vi;
typedef vector<string> vs;
typedef pair<int, int> pi;
#define F first
#define S second
#define pb push_back
#define mp make_pair
#define sz(a) a.size()
#define Print(a) for(int i = 0; i < a.size(); i++) {cout << a[i] << " ";} cout << endl;
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define endl "\n"
#define YES cout << "YES\n";
#define NO cout << "NO\n";

void solve() {
    int n; cin >> n;
    vector<int> p(n);
    for (int i = 0; i < n; ++i) {
        cin >> p[i];
    }

    vector<int> left(n, -1);
    vector<int> right(n, n);

    stack<int> st;

    for (int i = 0; i < n; ++i) {
        while (!st.empty() && p[st.top()] <= p[i]) {
            st.pop();
        }
        if (!st.empty()) {
            left[i] = st.top();
        }
        st.push(i);
    }

    while (!st.empty()) st.pop();

    for (int i = n - 1; i >= 0; --i) {
        while (!st.empty() && p[st.top()] < p[i]) {
            st.pop();
        }
        if (!st.empty()) {
            right[i] = st.top();
        }
        st.push(i);
    }

    long long total = 0;
    for (int i = 0; i < n; ++i) {
        long long count = (long long)(i - left[i]) * (right[i] - i);
        total += (long long)p[i] * count;
    }

    long long num_subarrays = (long long)n * (n + 1) / 2;
    double expected_value = (double)total / num_subarrays;

    cout << fixed << setprecision(10) << expected_value << endl;
}

int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    freopen("random.in", "r", stdin);
    /*
    freopen("wtf.out", "w", stdout);
    */
    int t = 1;
    //cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
