#include <bits/stdc++.h>
using namespace std;
int p[32];
int i, j, n, m;
int make(vector<int>& p) {
  int i, j, ans = 0;
  for (i = 0; i < p.size(); i++)
    for (j = i + 1; j < p.size(); j++) {
      if (p[i] > p[j]) ans++;
    }
  return ans;
}
vector<int> q[1000];
vector<int> qq[1000];
int num[1000];
int f(int a) { return a * (a - 1) / 2; }
double pp[1000][1000];
map<vector<int>, int> id;
void inv(vector<int>& p, int a) {
  int i, j;
  vector<int> ans;
  for (i = 0; i < p.size(); i++) {
    for (j = i + 1; j < p.size(); j++) {
      reverse(&p[i], &p[j] + 1);
      pp[a][id[p]] += 1;
      reverse(&p[i], &p[j] + 1);
    }
  }
}
double ppp[5][1000];
int main() {
  int k;
  scanf("%d %d", &n, &k);
  m = 1;
  vector<int> now;
  int ch = n * (n + 1) / 2;
  for (i = 1; i <= n; i++) {
    now.push_back(i);
    m *= i;
  }
  q[0] = now;
  id[now] = 0;
  for (i = 1; i < m; i++) {
    next_permutation(now.begin(), now.end());
    q[i] = now;
    id[q[i]] = i;
    num[i] = make(now);
  }
  for (i = 0; i < m; i++) {
    inv(q[i], i);
    pp[i][i] = n;
  }
  vector<int> all;
  for (i = 1; i <= n; i++) {
    scanf("%d", &j);
    all.push_back(j);
  }
  ppp[0][id[all]] = 1;
  int ii = 0;
  while (k--) {
    ii++;
    for (i = 0; i < m; i++) {
      for (j = 0; j < m; j++) {
        ppp[ii][j] += ppp[ii - 1][i] * pp[i][j] / ch;
      }
    }
  }
  double ans = 0;
  for (i = 0; i < m; i++) {
    ans += num[i] * ppp[ii][i];
  }
  printf("%.12lf\n", ans);
  return 0;
}
