#include <bits/stdc++.h>
using namespace std;
const int N = 1e2 + 10, K = 800;
int n, k, ar[N];
double p, ans, dp1[N][N][K + 10], dp2[N][N][K + 10];
int C2(int m) { return (m * (m + 1)) / 2.0; }
int solve(int l, int ll, int r) {
  if (ll > l) swap(l, ll);
  if (l < r) return max(0, min(ll + 1, r - l));
  return max(0, min(ll - r, n - l));
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> ar[i];
  p = 2.0 / (double)(n * (n + 1));
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++) {
      dp1[i][j][0] = (ar[i] > ar[j]);
      dp2[i][j][0] = (ar[i] < ar[j]);
    }
  k = min(k, K);
  for (int kk = 1; kk <= k; kk++) {
    for (int l = 0; l < n; l++) {
      for (int r = l + 1; r < n; r++) {
        int d = r - l;
        for (int ll = 0; ll < r; ll++)
          dp1[l][r][kk] += dp1[ll][r][kk - 1] * solve(l, ll, r) * p;
        for (int rr = l + 1; rr < n; rr++)
          dp1[l][r][kk] += dp1[l][rr][kk - 1] * solve(r, rr, l) * p;
        for (int rr = 0; rr <= l; rr++)
          dp1[l][r][kk] +=
              dp2[rr][rr + d][kk - 1] * max(0, min(n - r, rr + 1)) * p;
        for (int rr = l + 1; rr < n; rr++)
          dp1[l][r][kk] +=
              dp2[rr][rr + d][kk - 1] * max(0, min(l + 1, n - (rr + d))) * p;
        dp1[l][r][kk] +=
            (C2(l) + C2(r - l - 1) + C2(n - r - 1)) * dp1[l][r][kk - 1] * p;
        dp2[l][r][kk] = 1.0 - dp1[l][r][kk];
      }
    }
  }
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++) ans += dp1[i][j][k];
  cout << setprecision(9) << fixed << ans;
}
