#include<bits/stdc++.h>
using namespace std;
#define ll long long
int tong[2][300005];
const ll mod=998244353;
ll fac[300005];
void init(int n){
fac[0]=1;
for(int i=1; i<=n; i++) fac[i]=fac[i-1]*i%mod;
}
signed main(){
init(300000);
int n;
cin>>n;
pair<int,int> a[300005];
for(int i=1; i<=n; i++){
cin>>a[i].first>>a[i].second;
tong[0][a[i].first]++;
tong[1][a[i].second]++;
}
ll ans1=fac[n];
ll ans2=1;
for(int i=1; i<=n; i++){
if(tong[0][i]) (ans2=ans2*fac[tong[0][i]])%=mod;
}
ll ans3=1;
for(int i=1; i<=n; i++){
if(tong[1][i]) (ans3=ans3*fac[tong[1][i]])%=mod;
}
ll ans4=1;
sort(a+1,a+n+1);
int flag=1;
for(int i=1; i<=n; i++){
if(a[i].first<a[i-1].first||a[i].second<a[i-1].second){
flag=0;
break;
}
if(tong[1][i]&&tong[0][i]) (ans4=ans4*fac[min(tong[0][i],tong[1][i])])%=mod;
}
if(!flag) ans4=0;
cout<<(((((ans1-ans2)%mod+mod)%mod-ans3+mod)%mod+mod)%mod+ans4)%mod;
return 0;
}