#include <bits/stdc++.h>
using namespace std;
const int R = 1000;
int a[2002][2002];
double dp[2222][2222];
bool mark[2222][2222];
double n, m;
double rec(int r, int c) {
  if (r < 0 || c < 0) return 0;
  if (r == 0 && c == 0) return 0;
  if (mark[r][c]) return dp[r][c];
  mark[r][c] = true;
  double x = (n - c) * (n - r) / (n * n), f = 1;
  dp[r][c] = 1 + (rec(r - 1, c) * (n - c) * r + rec(r, c - 1) * (n - r) * c +
                  rec(r - 1, c - 1) * r * c) /
                     (n * n);
  dp[r][c] *= n * n;
  dp[r][c] /= n * n - (n - r) * (n - c);
  return dp[r][c];
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    a[x - 1][y - 1] = 1;
  }
  int row = n, col = n;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (a[i][j]) {
        row--;
        break;
      }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (a[j][i]) {
        col--;
        break;
      }
  cout << setprecision(9) << fixed << rec(row, col) << endl;
  return 0;
}
