#include <bits/stdc++.h>
bool used_x[2000];
bool used_y[2000];
double e[2002][2002];
double k(double a, double b, double c, double d) { return (a * b) / (c * d); }
int main() {
  int n, m, i, j;
  scanf("%d %d", &n, &m);
  e[n][n] = 0;
  for (i = 0; i <= n + 1; i++) {
    e[i][n + 1] = 0;
    e[n + 1][i] = 0;
  }
  for (i = n; i >= 0; i--) {
    for (j = n; j >= 0; j--) {
      if (i == n && j == n) continue;
      double res = 0;
      double p = k(i, j, n, n);
      res += k(n - i, n - j, n, n) * e[i + 1][j + 1];
      res += k(n - i, j, n, n) * e[i + 1][j];
      res += k(i, n - j, n, n) * e[i][j + 1];
      e[i][j] = (1 + res) / (1 - p);
    }
  }
  for (i = 0; i < n; i++) {
    used_x[i] = false;
    used_y[i] = false;
  }
  for (i = 0; i < m; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    used_x[x - 1] = true;
    used_y[y - 1] = true;
  }
  int a = 0, b = 0;
  for (i = 0; i < n; i++)
    if (used_x[i]) a++;
  for (i = 0; i < n; i++)
    if (used_y[i]) b++;
  printf("%.12f\n", e[a][b]);
  return 0;
}
