#include <bits/stdc++.h>
using namespace std;
int n, K, p[110];
double f[110][110], slen[110][110], sa[110][110], sb[110][110], prob;
inline int C2(int x) { return x * (x + 1) / 2; }
void solve() {
  memset(slen, 0, sizeof(slen));
  memset(sa, 0, sizeof(sa));
  memset(sb, 0, sizeof(sb));
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      sa[i][j] = f[i][j];
      sb[j][i] = f[i][j];
      if (i > j) slen[i - j][j] = f[i][j];
    }
  }
  for (int T = 0; T < 2; T++) {
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= n; j++) {
        sa[i][j] += sa[i][j - 1];
        sb[i][j] += sb[i][j - 1];
        slen[i][j] += slen[i][j - 1];
      }
    }
  }
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++)
      f[i][j] *= prob * (C2(i - 1) + C2(j - i - 1) + C2(n - j));
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      f[i][j] += prob * (sb[j][j - 1] - sb[j][j - i - 1] - sb[j][i - 1]);
      f[i][j] +=
          prob * (sa[i][n] - sa[i][i + n - j] - sa[i][j - 1] + sa[i][i - 1]);
      f[i][j] += prob * (slen[j - i][i + n - j] - slen[j - i][n - j] -
                         slen[j - i][i - 1]);
    }
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j < i; j++) f[i][j] = 1 - f[j][i];
}
int main() {
  scanf("%d%d", &n, &K);
  prob = 2.00 / (n * (n + 1));
  K = min(K, 1000);
  for (int i = 1; i <= n; i++) scanf("%d", &p[i]);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) f[i][j] = (p[i] > p[j]);
  for (int i = 1; i <= K; i++) solve();
  double ret = 0;
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) ret += f[i][j];
  printf("%.10lf\n", ret);
  return 0;
}
