#include<bits/stdc++.h>
using namespace std;
const int mod = 1000*1000*1000+7;
int N;
vector<int> A, B;
int main() {
scanf("%d", &N);
A.resize(N);
B.resize(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.begin(), A.end());
sort(B.begin(), B.end());
int ans = 1;
for(int i = N - 1; i >= 0; i--) {
int s = i + 1, e = N - 1;
int p = i;
while(s <= e) {
int m = (s + e)>>1;
if(A[m] <= B[i]) {
p = m;
s = m + 1;
}
else e = m - 1;
}
s = i + 1, e = N - 1;
int q = i;
while(s <= e) {
int m = (s + e)>>1;
if(B[m] <= A[i]) {
q = m;
s = m + 1;
}
else e = m - 1;
}
ans = 1LL * ans * (max(p, q) - i + 1) % mod;
}
cout << ans;
}