#pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include #include using namespace std; using namespace atcoder; using ll=long long; void IO(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); } ll P(ll a,ll mod){ ll res=1; for(ll i=1;i<=a;i++){ res*=i; res%=mod; } return res; } int main(){ IO(); ll n; cin>>n; vector x(n); for(ll i=0;i>x[i]; } vector y(n); for(ll i=0;i>y[i]; } sort(x.begin(),x.end()); sort(y.rbegin(),y.rend()); ll left=n,right=n; for(ll i=0;iy[i+1]){ left=i+1; right=n-left; break; } } ll mod=998244353; ll ans=1; if(left!=n&&right!=n){ ans*=P(left,mod); ans%=mod; ans*=P(right,mod); ans%=mod; }else{ ans*=P(left,mod); } cout<