#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2013;
int n, m;
long double dp[MAXN][MAXN];
bool rows[MAXN], colmuns[MAXN];
int main() {
  cin >> n >> m;
  int free_rows = n, free_columns = n;
  for (int i = 0; i < m; ++i) {
    int x, y;
    cin >> x >> y;
    if (!rows[x]) {
      rows[x] = true;
      --free_rows;
    }
    if (!colmuns[y]) {
      --free_columns;
      colmuns[y] = true;
    }
  }
  for (int i = 1; i <= n; ++i) {
    dp[0][i] = dp[0][i - 1] + (long double)n / i;
    dp[i][0] = dp[i - 1][0] + (long double)n / i;
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= n; ++j) {
      long double tmp =
          1 + (dp[i - 1][j - 1] * i * j + dp[i - 1][j] * i * (n - j) +
               dp[i][j - 1] * j * (n - i)) /
                  (n * n);
      dp[i][j] = tmp * n * n / (n * i + n * j - i * j);
    }
  }
  cout.setf(ios::fixed);
  cout.precision(5);
  cout << dp[free_rows][free_columns];
  return 0;
}
