#include <bits/stdc++.h>
using namespace std;
double dp[2002][2002];
int n;
int m;
bool x[2002];
bool y[2002];
bool use[2002][2002];
inline double dfs(int a, int b) {
  if (a == 0 && b == 0) {
    return 0;
  }
  if (use[a][b]) {
    return dp[a][b];
  }
  int onlyx = a * (n - b);
  int onlyy = b * (n - a);
  int ng = (n - a) * (n - b);
  int bot = n * n - ng - onlyx - onlyy;
  double pre = (double)(n * n) / (double)(n * n - ng);
  double sum = pre;
  if (a) sum += (dfs(a - 1, b)) * (double)(onlyx) / (double)(n * n - ng);
  if (b) sum += (dfs(a, b - 1)) * (double)(onlyy) / (double)(n * n - ng);
  if (a && b) sum += (dfs(a - 1, b - 1)) * (double)(bot) / (double)(n * n - ng);
  dp[a][b] = sum;
  use[a][b] = true;
  return sum;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; i++) {
    int r, c;
    scanf("%d%d", &r, &c);
    r--;
    c--;
    x[r] = true;
    y[c] = true;
  }
  int cnt1 = 0;
  int cnt2 = 0;
  for (int i = 0; i < n; i++) {
    if (x[i] == false) {
      cnt1++;
    }
    if (y[i] == false) {
      cnt2++;
    }
  }
  double ans = dfs(cnt1, cnt2);
  printf("%.16f\n", ans);
  return 0;
}
