#include <cstdio>
#include <cmath>
#include <map>
#include <cstring>
#include <algorithm>
using namespace std;
#define mst(a,b) memset((a),(b),sizeof(a))
#define rush() int T;scanf("%d",&T);while(T--)
typedef long long ll;
const int maxn = 1000005;
const ll mod = 1e9+7;
const int INF = 0x3f3f3f3f;
const double eps = 1e-6;
int a[maxn],pre[maxn];
int main()
{
int n,x;
while(~scanf("%d",&n))
{
mst(pre,0);
ll ans=0;
ll temp=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
temp+=i-pre[x];
pre[x]=i;
ans+=(ll)temp*2-1;
}
printf("%.6f\n",ans*1.0/n/n);
}
return 0;
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBtc3QoYSxiKSBtZW1zZXQoKGEpLChiKSxzaXplb2YoYSkpCiNkZWZpbmUgcnVzaCgpIGludCBUO3NjYW5mKCIlZCIsJlQpO3doaWxlKFQtLSkKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmNvbnN0IGludCBtYXhuID0gMTAwMDAwNTsKY29uc3QgbGwgbW9kID0gMWU5Kzc7CmNvbnN0IGludCBJTkYgPSAweDNmM2YzZjNmOwpjb25zdCBkb3VibGUgZXBzID0gMWUtNjsKaW50IGFbbWF4bl0scHJlW21heG5dOwppbnQgbWFpbigpCnsKICAgIGludCBuLHg7CiAgICB3aGlsZSh+c2NhbmYoIiVkIiwmbikpCiAgICB7CiAgICAgICAgbXN0KHByZSwwKTsKICAgICAgICBsbCBhbnM9MDsKICAgICAgICBsbCB0ZW1wPTA7CiAgICAgICAgZm9yKGludCBpPTE7aTw9bjtpKyspCiAgICAgICAgewogICAgICAgICAgICBzY2FuZigiJWQiLCZ4KTsKICAgICAgICAgICAgdGVtcCs9aS1wcmVbeF07CiAgICAgICAgICAgIHByZVt4XT1pOwogICAgICAgICAgICBhbnMrPShsbCl0ZW1wKjItMTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCIlLjZmXG4iLGFucyoxLjAvbi9uKTsKICAgIH0KICAgIHJldHVybiAwOwp9