#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
#pragma GCC optimization("unroll-loops")
using namespace std;
const int mod = 1000000007;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
void b_v_r() {
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
}
long long a[1000006];
long long last_occ[1000006];
long long ans[1000006];
void solve() {
  long long n;
  cin >> n;
  for (int i = 1; i <= (int)(n); ++i) {
    cin >> a[i];
  }
  memset(last_occ, 0, sizeof(last_occ));
  memset(ans, 0, sizeof(ans));
  map<int, int> make_pair;
  for (int i = 1; i <= (int)(n); ++i) {
    ans[i] = ans[i - 1] + (i - last_occ[a[i]]);
    last_occ[a[i]] = i;
  }
  long long sum = 0;
  for (int i = 1; i <= (int)(n); ++i) {
    sum += ans[i];
  }
  double fin_ans = (((double)((2 * sum) - n)) / (double)(n * n));
  cout << fixed << setprecision(6) << fin_ans << "\n";
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int tc = 1;
  while (tc--) {
    solve();
  }
  return 0;
}
