#include <bits/stdc++.h>
using namespace std;
int visited[100002];
const long long int N = 100006;
long long int tr[6 * N];
void upd(long long int curr, long long int S, long long int E, long long int s,
         long long int v) {
  if (s == S && s == E) {
    tr[curr] = v;
    return;
  }
  if (s < S || s > E) return;
  long long int mid = (S + E) / 2;
  upd(curr * 2, S, mid, s, v);
  upd(curr * 2 + 1, mid + 1, E, s, v);
  tr[curr] = max(tr[curr * 2], tr[curr * 2 + 1]);
}
long long int query(long long int curr, long long int S, long long int E,
                    long long int s, long long int e) {
  if (s > E || e < S) return 0;
  if (s <= S && e >= E) return tr[curr];
  long long int mid = (S + E) / 2;
  return max(query(curr * 2, S, mid, s, e),
             query(curr * 2 + 1, mid + 1, E, s, e));
}
int main() {
  long long int n, p;
  long long int a[2009], b[5000] = {0};
  cin >> n;
  vector<long long int> c(5002);
  long long int r, h = 0, i, j;
  for (i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (i = 0; i < n; i++) {
    for (j = i + 1; j < n; j++) b[abs(a[i] - a[j])]++;
  }
  long long int d[5005] = {0};
  double ans = 0;
  for (i = 5001; i >= 0; i--) d[i] = d[i + 1] + b[i];
  for (i = 1; i < 5000; i++) {
    for (j = 1; i + j < 5000; j++) ans += d[i + j + 1] * b[i] * b[j];
  }
  printf("%.9f", ans / pow((n * (n - 1) / 2), 3));
  return 0;
}
