#include <bits/stdc++.h>
using namespace std;
const int sz = 2050;
int n, m;
bool rmask[sz] = {false}, cmask[sz] = {false};
int rcnt = 0, ccnt = 0;
double dp[sz][sz] = {0.0};
int main() {
  scanf("%d %d", &n, &m);
  while (m--) {
    int x, y;
    scanf("%d %d", &x, &y);
    x--;
    y--;
    rmask[x] = cmask[y] = true;
  }
  for (int i = 0; i < n; i++)
    if (rmask[i]) rcnt++;
  for (int j = 0; j < n; j++)
    if (cmask[j]) ccnt++;
  for (int r = n; r >= 0; r--)
    for (int c = n; c >= 0; c--) {
      if (r == n && c == n)
        dp[n][n] = 0.0;
      else {
        double rp = double(r) / n;
        double cp = double(c) / n;
        dp[r][c] = (1.0 + dp[r + 1][c] * (1.0 - rp) * cp +
                    dp[r][c + 1] * rp * (1.0 - cp) +
                    dp[r + 1][c + 1] * (1.0 - rp) * (1.0 - cp)) /
                   (1.0 - rp * cp);
      }
    }
  printf("%.15f\n", dp[rcnt][ccnt]);
  return 0;
}
