#include <bits/stdc++.h>
using namespace std;
const long long N = 2005;
long long n, m;
bool vis[N][N];
long double cache[N][N];
set<long long> rows, cols;
long double dp(long long r, long long c) {
  if (r < 0 || c < 0) return 0;
  if (r == 0 && c == 0) return 0;
  long double &ans = cache[r][c];
  if (vis[r][c]) return ans;
  vis[r][c] = 1;
  ans = 0;
  long double A = r * c;
  long double B = (n - r) * c;
  long double C = r * (n - c);
  long double D = (n - r) * (n - c);
  long double den = 1 - (D / (n * n));
  long double num =
      1 +
      (A * dp(r - 1, c - 1) + B * dp(r, c - 1) + C * dp(r - 1, c)) / (n * n);
  ans = num / den;
  return ans;
}
int32_t main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  cin >> n >> m;
  for (long long i = 1; i <= m; i++) {
    long long r, c;
    cin >> r >> c;
    rows.insert(r);
    cols.insert(c);
  }
  long double ans = dp(n - rows.size(), n - cols.size());
  cout << fixed << setprecision(12) << ans;
  return 0;
}
