#include <bits/stdc++.h>
using namespace std;
bool seenx[2048], seeny[2048];
double pd[2048][2048];
int main() {
  int N, m;
  scanf("%d %d", &N, &m);
  for (int i = 0; i < m; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    seenx[x - 1] = true;
    seeny[y - 1] = true;
  }
  int a = 0, b = 0;
  for (int i = 0; i < N; i++) {
    if (seenx[i]) a++;
    if (seeny[i]) b++;
  }
  for (int i = N; i >= a; i--)
    for (int j = N; j >= b; j--) {
      pd[i][j] = 0.0;
      if (j < N) {
        pd[i][j] += (pd[i][j + 1] + 1) * i * (N - j) / N / N;
      }
      if (i < N) {
        pd[i][j] += (pd[i + 1][j] + 1) * (N - i) * j / N / N;
      }
      if (i < N && j < N) {
        pd[i][j] += (pd[i + 1][j + 1] + 1) * (N - i) * (N - j) / N / N;
      }
      if (i * j < N * N) {
        pd[i][j] += (double)i * j / N / N;
        pd[i][j] *= N * N;
        pd[i][j] /= N * N - i * j;
      }
    }
  printf("%lf\n", pd[a][b]);
  return 0;
}
