#include <bits/stdc++.h>
using namespace std;
template <typename T>
void maxE(T& a, const T& b) {
  a = max(a, b);
}
template <typename T>
void minE(T& a, const T& b) {
  a = min(a, b);
}
template <typename T>
ostream& operator<<(ostream& out, const vector<T>& t) {
  out << "[";
  for (auto i : t) out << i << ", ";
  out << "]";
  return out;
}
template <typename S, typename T>
ostream& operator<<(ostream& out, const pair<S, T>& rhs) {
  out << "(" << rhs.first << "," << rhs.second << ")";
  return out;
}
int n, k, idn;
vector<int> t;
map<pair<int, int>, int> stateId;
vector<vector<double> > g;
void mulE(vector<vector<double> >& r, vector<vector<double> > b) {
  int n = ((int)((b).size()));
  vector<vector<double> > a = r;
  r.assign(n, vector<double>(n, 0));
  for (int i = 0; i < int(n); ++i)
    for (int j = 0; j < int(n); ++j)
      for (int k = 0; k < int(n); ++k) r[i][j] += a[i][k] * b[k][j];
}
void pow(vector<vector<double> > a, int k, vector<vector<double> >& r) {
  int n = ((int)((a).size()));
  r.assign(n, vector<double>(n, 0));
  for (int i = 0; i < int(n); ++i) r[i][i] = 1;
  while (k) {
    if (k % 2) mulE(r, a);
    mulE(a, a);
    k /= 2;
  }
}
int inv(int i, int j, int s) {
  if (i <= s && s <= j) {
    return i + (j - s);
  } else
    return s;
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < int(n); ++i)
    for (int j = 0; j < int(n); ++j)
      if (i != j) stateId[make_pair(i, j)] = idn++;
  for (int i = 0; i < int(n); ++i) {
    int a;
    cin >> a;
    a--;
    t.push_back(a);
  }
  g.assign(idn, vector<double>(idn, 0));
  for (int s1 = 0; s1 < int(n); ++s1)
    for (int s2 = 0; s2 < int(n); ++s2)
      if (s1 != s2) {
        for (int i = 0; i < int(n); ++i)
          for (int j = i; j < n; j++) {
            int s1p = inv(i, j, s1);
            int s2p = inv(i, j, s2);
            g[stateId[make_pair(s1, s2)]][stateId[make_pair(s1p, s2p)]] += 1;
            if (0)
              cout << "poss " << make_pair(s1, s2) << "-> "
                   << make_pair(s1p, s2p) << endl;
          }
      }
  for (int i = 0; i < int(idn); ++i)
    for (int j = 0; j < int(idn); ++j) g[i][j] /= n * (n + 1) / 2;
  pow(g, k, g);
  double result = 0;
  for (int i = 0; i < int(n); ++i)
    for (int j = i + 1; j < n; j++) {
      double s = 0;
      for (int s1 = 0; s1 < int(n); ++s1)
        for (int s2 = 0; s2 < int(n); ++s2)
          if (s1 > s2)
            s += g[stateId[make_pair(i, j)]][stateId[make_pair(s1, s2)]];
      if (t[i] > t[j]) s = 1 - s;
      result += s;
    }
  cout.precision(14);
  cout << fixed << result << endl;
  return 0;
}
