#include <bits/stdc++.h>
using namespace std;
const int N = 1e2 + 7;
double dp[2][N][N];
double prei[N], prej[N], prek[N];
int data[N];
double c2(int n) { return (n * (n - 1)) >> 1; }
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  m = min(m, 900);
  for (int i = (1); i < (n + 1); ++i) scanf("%d", &data[i]);
  for (int i = (1); i < (n + 1); ++i)
    for (int j = (i + 1); j < (n + 1); ++j) dp[0][i][j] = (data[i] > data[j]);
  for (int cas = (0); cas < (m); ++cas) {
    int zt = (cas & 1);
    memset(dp[zt ^ 1], 0, sizeof(dp[zt ^ 1]));
    for (int i = (1); i < (n + 1); ++i)
      for (int j = (i + 1); j < (n + 1); ++j) {
        for (int k = (1); k < (n + 1); ++k) {
          prei[k] = prei[k - 1] + dp[zt][i][k];
          prej[k] = prej[k - 1] + dp[zt][k][j];
          if (k + j - i <= n) prek[k] = prek[k - 1] + 1 - dp[zt][k][k + j - i];
        }
        double all = c2(n) + n, cnt = 0;
        dp[zt ^ 1][i][j] +=
            dp[zt][i][j] * (c2(i - 1) + c2(j - i - 1) + c2(n - j) + n - 2);
        cnt += (c2(i - 1) + c2(j - i - 1) + c2(n - j) + n - 2);
        for (int k = (i); k < (j); ++k)
          dp[zt ^ 1][i][j] += (prej[k] - prej[k - i]), cnt += i;
        for (int k = (i + 1); k < (j + 1); ++k)
          dp[zt ^ 1][i][j] += (prei[k + n - j] - prei[k - 1]), cnt += n - j + 1;
        for (int k = (j); k < (n + 1); ++k)
          dp[zt ^ 1][i][j] += (prek[k - j + i] - prek[k - j]), cnt += i;
        dp[zt ^ 1][i][j] /= all;
      }
  }
  double ans = 0;
  for (int i = (1); i < (n + 1); ++i)
    for (int j = (i + 1); j < (n + 1); ++j) ans += dp[m & 1][i][j];
  printf("%.10lf\n", ans);
  return 0;
}
