#include <bits/stdc++.h>
using namespace std;
const int maxv = 2e3 + 30;
int n, m;
bool cp[maxv], rp[maxv];
double dp[maxv][maxv];
int main() {
  cin >> n >> m;
  int r = n, c = n;
  for (int i = 0; i < m; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    if (!rp[x]) r--;
    if (!cp[y]) c--;
    rp[x] = cp[y] = 1;
  }
  for (int i = 1; i < maxv; i++) dp[i][0] = dp[i - 1][0] + n / (double)i;
  for (int j = 1; j < maxv; j++) dp[0][j] = dp[0][j - 1] + n / (double)j;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) {
      double &v = dp[i][j];
      v = dp[i - 1][j - 1] * (i) * (j) + dp[i - 1][j] * (i) * (n - j) +
          dp[i][j - 1] * (n - i) * (j);
      v /= (double)n * n;
      v++;
      v /= 1.0 - (n - i) * (n - j) / (double)(n * n);
    }
  printf("%.10f", dp[r][c]);
  return 0;
}
