#include <bits/stdc++.h>
using namespace std;
void RI() {}
template <typename... T>
void RI(int& head, T&... tail) {
  scanf("%d", &head);
  RI(tail...);
}
int n, m, a[110];
double dp[1010][110][110];
int main() {
  RI(n, m);
  if (m > 1000) m = 1000;
  for (int i = (1); i <= int(n); i++) RI(a[i]);
  if (n == 1) return puts("0"), 0;
  int base = n * (n + 1) / 2;
  for (int t = (1); t <= int(m); t++)
    for (int i = (1); i <= int(n); i++)
      for (int j = (i + 1); j <= int(n); j++) {
        double s = 0;
        int sc = 0;
        for (int k = (1); k <= int(j - 1); k++) {
          int c = min(min(i, k), j - max(i, k));
          sc += c;
          s += c * dp[t - 1][k][j];
        }
        for (int k = (i + 1); k <= int(n); k++) {
          int c = min(min(j, k) - i, n + 1 - max(j, k));
          sc += c;
          s += c * dp[t - 1][i][k];
        }
        for (int k = (1); k <= int(i - 1); k++) {
          int c = min(k, n + 1 - j);
          sc += c;
          s += c * (1 - dp[t - 1][k][j - (i - k)]);
        }
        for (int k = (j + 1); k <= int(n); k++) {
          int c = min(i, n + 1 - k);
          sc += c;
          s += c * (1 - dp[t - 1][i + k - j][k]);
        }
        {
          int c = min(i, n + 1 - j);
          sc += c;
          s += c * (1 - dp[t - 1][i][j]);
        }
        {
          int c = (i - 1) * i / 2;
          sc += c;
          s += c * dp[t - 1][i][j];
        }
        {
          int c = (n - j) * (n - j + 1) / 2;
          sc += c;
          s += c * dp[t - 1][i][j];
        }
        {
          int c = (j - i) * (j - i - 1) / 2;
          sc += c;
          s += c * dp[t - 1][i][j];
        }
        assert(sc == base);
        dp[t][i][j] = s / base;
      }
  double ans = 0;
  for (int i = (1); i <= int(n); i++)
    for (int j = (i + 1); j <= int(n); j++) {
      if (a[i] < a[j])
        ans += dp[m][i][j];
      else
        ans += 1 - dp[m][i][j];
    }
  printf("%.12f\n", (double)ans);
  return 0;
}
