#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:1024000000,1024000000")
int a[(100 + 10)];
double p[(100 + 10)][(100 + 10)][2];
int get(int x) {
  if (x < 0) return 0;
  int ans = 0;
  if (x >= 2) ans += (x - 1) * x / 2;
  ans += x;
  return ans;
}
int find(int x) {
  if (x <= 0) return 0;
  return (1 + x) * x / 2;
}
int main() {
  int n, K;
  scanf("%d%d", &n, &K);
  K = min(900, K);
  for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
  for (int i = 0; i < n; ++i)
    for (int j = i + 1; j < n; ++j) p[i][j][0] = a[i] > a[j] ? 1 : 0;
  int all = (1 + n) * n / 2;
  int mul, ll, rr;
  for (int k = 1; k <= K; ++k) {
    int cur = k & 1, last = cur ^ 1;
    for (int i = 0; i < n; ++i) {
      for (int j = i + 1; j < n; ++j) {
        p[i][j][cur] =
            p[i][j][last] * (find(i) + find(j - i - 1) + find(n - j - 1));
        int st = i, ed = i + j - 1;
        for (int s = st; s <= ed; ++s) {
          ll = s - j + 1 > 0 ? s - j + 1 : 0;
          rr = i < s - i ? i : s - i;
          mul = rr - ll + 1;
          p[i][j][cur] += p[s - i][j][last] * mul;
        }
        st = i + 1 + j, ed = j + n - 1;
        for (int s = st; s <= ed; ++s) {
          ll = i + 1 > s - n + 1 ? i + 1 : s - n + 1;
          rr = j < s - j ? j : s - j;
          mul = rr - ll + 1;
          p[i][j][cur] += p[i][s - j][last] * mul;
        }
        st = j;
        ed = i + n - 1;
        for (int s = st; s <= ed; ++s) {
          ll = s - n + 1 > 0 ? s - n + 1 : 0;
          rr = i < s - j ? i : s - j;
          mul = rr - ll + 1;
          p[i][j][cur] += (1.0 - p[s - j][s - i][last]) * mul;
        }
        p[i][j][cur] /= 1.0 * all;
      }
    }
  }
  double ans = 0;
  for (int i = 0; i < n; ++i) {
    for (int j = i + 1; j < n; ++j) {
      ans += p[i][j][K & 1];
    }
  }
  printf("%.15lf\n", ans);
}
