#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int main()
{
int N, A[100000], B[100000];
int cd[100001];
cd[0] = 1;
for(int i = 1; i < 100001; i++) cd[i] = (1LL * cd[i - 1] * i) % mod;
scanf("%d", &N);
for(int i = 0; i < N; i++) {
scanf("%d", &A[i]);
}
for(int i = 0; i < N; i++) {
scanf("%d", &B[i]);
}
sort(A, A + N);
sort(B, B + N);
for(int i = 0; i < N; i++) {
if(A[i] > B[i]) swap(A[i], B[i]);
}
int ret = 1;
for(int i = 0; i < N; i++) {
auto high = lower_bound(A, A + N, B[i]) - A;
ret = 1LL * ret * cd[high - i] % mod;
i = high - 1;
}
cout << ret << endl;
}