#include <bits/stdc++.h>
using namespace std;
const int MAXN = 128;
const int MAXLOOP = 1000;
int n, k, perm[MAXN], t;
long double p[2][MAXN][MAXN], P;
int Cn2(int n) { return (n * (n - 1)) >> 1; }
long double sum[MAXN][MAXN], sumForward[MAXN][MAXN], sumBackward[MAXN][MAXN];
void calcNone() {
  for (int i = (0); i < (n); i++)
    for (int j = (i + 1); j < (n); j++) {
      int left = i, middle = j - i - 1, right = n - 1 - j;
      p[t ^ 1][i][j] +=
          p[t][i][j] / P * (Cn2(left + 1) + Cn2(middle + 1) + Cn2(right + 1));
    }
}
void calcLeft() {
  for (int j = (1); j < (n); j++) {
    sumForward[0][j] = sum[0][j] = p[t][0][j];
    for (int i = (1); i < (j); i++) {
      sumForward[i][j] = sumForward[i - 1][j] + p[t][i][j] * (i + 1);
      sum[i][j] = sum[i - 1][j] + p[t][i][j];
    }
    sumBackward[j - 1][j] = p[t][j - 1][j];
    for (int i = j - 2; i >= 0; i--) {
      sumBackward[i][j] = sumBackward[i + 1][j] + p[t][i][j] * (j - i);
    }
  }
  for (int i = (0); i < (n); i++)
    for (int j = (i + 1); j < (n); j++) {
      int left = i, middle = j - i - 1, span = min(left, middle);
      if (span) {
        p[t ^ 1][i][j] +=
            (sumForward[span - 1][j] + sumBackward[j - span][j]) / P;
      }
      p[t ^ 1][i][j] += sum[j - span - 1][j] * (span + 1) / P;
      if (span) p[t ^ 1][i][j] -= sum[span - 1][j] * (span + 1) / P;
    }
}
void calcRight() {
  for (int i = (0); i < (n); i++) {
    sumForward[i][i + 1] = sum[i][i + 1] = p[t][i][i + 1];
    for (int j = (i + 2); j < (n); j++) {
      sumForward[i][j] = sumForward[i][j - 1] + p[t][i][j] * (j - i);
      sum[i][j] = sum[i][j - 1] + p[t][i][j];
    }
    sumBackward[i][n - 1] = p[t][i][n - 1];
    for (int j = n - 2; j > i; j--) {
      sumBackward[i][j] = sumBackward[i][j + 1] + p[t][i][j] * (n - j);
    }
  }
  for (int i = (0); i < (n); i++)
    for (int j = (i + 1); j < (n); j++) {
      int middle = j - i - 1, right = n - 1 - j, span = min(middle, right);
      if (span) {
        p[t ^ 1][i][j] +=
            (sumForward[i][i + span] + sumBackward[i][n - span]) / P;
      }
      p[t ^ 1][i][j] += sum[i][n - span - 1] * (span + 1) / P;
      if (span) p[t ^ 1][i][j] -= sum[i][i + span] * (span + 1) / P;
    }
}
void calcBoth() {
  for (int j = (1); j < (n); j++) {
    sumForward[0][j] = sum[0][j] = 1 - p[t][0][j];
  }
  for (int i = (1); i < (n); i++)
    for (int j = (i + 1); j < (n); j++) {
      sumForward[i][j] = sumForward[i - 1][j - 1] + (1 - p[t][i][j]) * (i + 1);
      sum[i][j] = sum[i - 1][j - 1] + 1 - p[t][i][j];
    }
  for (int i = (0); i < (n - 1); i++) {
    sumBackward[i][n - 1] = 1 - p[t][i][n - 1];
  }
  for (int j = n - 2; j >= 0; j--) {
    for (int i = (0); i < (j); i++) {
      sumBackward[i][j] =
          sumBackward[i + 1][j + 1] + (1 - p[t][i][j]) * (n - j);
    }
  }
  for (int i = (0); i < (n); i++)
    for (int j = (i + 1); j < (n); j++) {
      int left = i, right = n - 1 - j, span = min(left, right);
      if (span) {
        p[t ^ 1][i][j] += (sumForward[span][j - i + span] +
                           sumBackward[n + i - j - span][n - span]) /
                          P;
      }
      p[t ^ 1][i][j] +=
          sum[n + i - j - span - 1][n - span - 1] * (span + 1) / P;
      if (span) {
        p[t ^ 1][i][j] -= sum[span][j - i + span] * (span + 1) / P;
      }
    }
}
long double calc() {
  P = Cn2(n + 1);
  for (int _ = (0); _ < (min(MAXLOOP, k)); _++) {
    for (int i = (0); i < (n); i++)
      for (int j = (i + 1); j < (n); j++) p[t ^ 1][i][j] = 0;
    calcNone();
    calcLeft();
    calcRight();
    calcBoth();
    t ^= 1;
  }
  long double res = 0;
  for (int i = (0); i < (n); i++)
    for (int j = (i + 1); j < (n); j++) {
      res += p[t][i][j];
    }
  return res;
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = (0); i < (n); i++) scanf("%d", &perm[i]);
  t = 0;
  for (int i = (0); i < (n); i++)
    for (int j = (i + 1); j < (n); j++) {
      p[t][i][j] = perm[i] > perm[j] ? 1 : 0;
    }
  cout << setprecision(16) << fixed << calc();
  putchar('\n');
  return 0;
}
