#include <bits/stdc++.h>
using namespace std;
const int N = 2e3 + 5;
long double dp[N][N];
bool mark[2][N];
int main() {
  int n, m;
  cin >> n >> m;
  cout << setprecision(5);
  while (m--) {
    int x, y;
    cin >> x >> y;
    mark[0][x] = mark[1][y] = 1;
  }
  int x = 0, y = 0;
  for (int i = 1; i <= n; i++) x += mark[0][i], y += mark[1][i];
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      if (!i && !j) continue;
      long double num = (n * i) + (j * n) - (i * j);
      dp[i][j] = (long double)n * n / num;
      if (i) dp[i][j] += (long double)(i * n - (i * j)) / num * dp[i - 1][j];
      if (j) dp[i][j] += (long double)(j * n - (i * j)) / num * dp[i][j - 1];
      if (i && j) dp[i][j] += (long double)(i * j) / num * dp[i - 1][j - 1];
    }
  }
  x = n - x, y = n - y;
  cout << dp[x][y] << "\n";
}
