#include <bits/stdc++.h>   int n, k;   bool visited[101][101][1010];   double ar[101], dp[101][101][1010];   double F(int i, int j, int k) {     if (i > j) return 1.0 - F(j, i, k);     if (k == 0) return 1.0;     if (visited[i][j][k]) return dp[i][j][k];     int a, b, c, d, l;     double x, y, p = 1.0 / ((n * (n + 1)) >> 1), res = 0.0;     for (a = 0; a < n; a++) {       for (b = a; b < n; b++) {         c = i, d = j;         if (c >= a && c <= b) c = b - (c - a);         if (d >= a && d <= b) d = b - (d - a);         res += (p * F(c, d, k - 1));       }     }     visited[i][j][k] = true;     return (dp[i][j][k] = res);   }   int main() {     int i, j, l;     while (scanf( %d %d , &n, &k) != EOF) {       if (k > 1000) k = 1000;       for (i = 0; i < n; i++) scanf( %d , &ar[i]);       memset(visited, 0, sizeof(visited));       double res = 0.0;       for (i = 0; i < n; i++) {         for (j = i + 1; j < n; j++) {           if (ar[i] < ar[j])             res += (1.0 - F(i, j, k));           else             res += F(i, j, k);         }       }       printf( %0.12f n , res + 1e-15);     }     return 0;   }   