#include #include #include #include #include using namespace std; int a[310], vis[310]; void k(int left, int right) { int i, j, t, temp; if (left > right) return ; temp = a[left]; i = left; j = right; while (i != j) { while (a[j] >= temp && i < j) j--; while (a[i] <= temp && i < j) i++; if (i < j) { t = a[i]; a[i] = a[j]; a[j] = t; } } a[left] = a[i]; a[i] = temp; k(left, i - 1); k(i + 1, right); } int C(int n, int m) { int s; if (n == 1) s = 1; else if (m == 0) s = 1; else if (n == m) s = 1; else s = C(n - 1, m - 1) + C(n - 1, m); return s; } int main() { double f; int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%d", &a[i]); k(1, n); // memset(vis, 0, sizeof(vis)); // for (int i = 1; i <= n; i++) // for (int j = i + 1; j <= n; j++) // if (a[i] == a[j]) // vis[j] = 1; // for (int i = 1; i <= n; i++) // printf("%d ", a[i]); int flag = 0; for (int i = n; i >= 1; i--) for (int j = i - 1; j >= 1; j--) { if (a[i] > a[j]) flag++; } f = flag * 1.0 / (C(n, 2) * 2); // printf("%d\n", C(n, 2)); printf("%.6lf\n", f); } return 0; }