#include <bits/stdc++.h>
using namespace std;
long long n, dv = 998244353;
pair<long long, long long> a[300069];
int main() {
  long long i, ii, z = 1, k, c;
  scanf("%lld", &n);
  for (i = 0; i < n; i++) {
    scanf("%lld%lld", &a[i].first, &a[i].second);
  }
  for (i = 1; i <= n; i++) {
    z = z * i % dv;
  }
  for (ii = 0; ii < 2; ii++) {
    sort(a, a + n);
    k = 1;
    for (i = 0; i < n; i++) {
      if (i == 0 || a[i].first != a[i - 1].second) {
        c = 0;
      }
      c++;
      k = k * c % dv;
      swap(a[i].first, a[i].second);
    }
    z = (z + dv - k) % dv;
  }
  sort(a, a + n);
  k = 1;
  for (i = 0; i < n; i++) {
    if (i == 0 || a[i] != a[i - 1]) {
      c = 0;
    }
    c++;
    k = k * c % dv;
    if (i > 0 && a[i].second < a[i - 1].second) {
      k = 0;
    }
  }
  z = (z + k) % dv;
  printf("%lld\n", z);
}
