#include <bits/stdc++.h>
using namespace std;
const int N = 104, NN = N * N, K = 1004;
int a[N];
int id[N][N];
vector<pair<int, double>> p[NN], q[NN];
double dp[2][NN];
int get(int i, int l, int r) {
  if (i < l || i > r) return i;
  return l + r - i;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  if (k >= K - 5) k = K - 5;
  for (int i = 1; i <= n; i++) cin >> a[i];
  int sz = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      id[i][j] = ++sz;
      if (a[i] > a[j]) dp[0][sz] = 1;
    }
  }
  int moves = n * (n + 1) / 2;
  double base = 1.0 / moves;
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      if (i == j) continue;
      int iid = id[i][j];
      vector<int> cnt(n * n + 1), cnt2(n * n + 1);
      for (int l = 1; l <= n; l++) {
        for (int r = l; r <= n; r++) {
          int ii = get(i, l, r);
          int jj = get(j, l, r);
          if (ii < jj)
            cnt[id[ii][jj]]++;
          else
            cnt2[id[jj][ii]]++;
        }
      }
      for (int i = 0; i <= n * n; i++) {
        if (cnt[i]) p[iid].push_back({i, cnt[i] * base});
        if (cnt2[i]) q[iid].push_back({i, cnt2[i] * base});
      }
    }
  }
  for (int kk = 1; kk <= k; kk++) {
    bool b = kk % 2;
    for (int cur = 1; cur <= sz; cur++) dp[b][cur] = 0;
    for (int cur = 1; cur <= sz; cur++) {
      for (auto pr : p[cur]) {
        int nw = pr.first;
        double pp = pr.second;
        dp[b][nw] += pp * dp[!b][cur];
      }
      for (auto pr : q[cur]) {
        int nw = pr.first;
        double pp = pr.second;
        dp[b][nw] += pp * (1 - dp[!b][cur]);
      }
    }
  }
  double ans = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      if (i == j) continue;
      ans += dp[k % 2][id[i][j]];
    }
  }
  cout << setprecision(10) << fixed << ans << endl;
}
