#include <bits/stdc++.h>
using namespace std;
double h[2][1010][1010];
int x[1010];
int main() {
  int n, m, i, j, k, a, b;
  double res, tmp;
  scanf("%d %d", &n, &m);
  for (i = 0; i < n; i++) scanf("%d", &x[i]);
  memset(h, 0, sizeof(h));
  for (i = 0; i < n; i++) {
    for (j = i + 1; j < n; j++)
      if (x[i] < x[j]) h[0][i][j] = 1;
  }
  res = 0;
  for (i = 0; i < n; i++) {
    for (j = 0; j < i; j++)
      if (x[i] < x[j]) res += 1;
  }
  while (m--) {
    scanf("%d %d", &a, &b);
    a--;
    b--;
    if (a > b) {
      k = a;
      a = b;
      b = k;
    }
    tmp = 0;
    for (i = a; i < b; i++) {
      tmp += 2 * h[0][i][b] - 1;
    }
    for (i = a + 1; i < b; i++) {
      tmp += 2 * h[0][a][i] - 1;
    }
    res += tmp / 2;
    for (i = 0; i < n; i++) {
      if (i == a || i == b) continue;
      if (i < a) {
        h[1][i][a] = h[1][i][b] = (h[0][i][a] + h[0][i][b]) / 2;
      } else if (i < b) {
        h[1][a][i] = 1 - (1 - h[0][a][i] + h[0][i][b]) / 2;
        h[1][i][b] = 1 - h[1][a][i];
      } else {
        h[1][a][i] = h[1][b][i] = (h[0][a][i] + h[0][b][i]) / 2;
      }
    }
    h[0][a][b] = 0.5;
    for (i = 0; i < n; i++) {
      if (i == a || i == b) continue;
      if (i < a) {
        h[0][i][a] = h[0][i][b] = h[1][i][a];
      } else if (i < b) {
        h[0][a][i] = h[1][a][i];
        h[0][i][b] = h[1][i][b];
      } else {
        h[0][a][i] = h[0][b][i] = h[1][a][i];
      }
    }
  }
  printf("%.9lf\n", res);
  return 0;
}
