Problem:
Score : 500 points

Problem Statement

#nck {
width: 30px;
height: auto;
}

There are N computers and N sockets in a one-dimensional world.
The coordinate of the i-th computer is a_i, and the coordinate of the i-th socket is b_i.
It is guaranteed that these 2N coordinates are pairwise distinct.

Snuke wants to connect each computer to a socket using a cable.
Each socket can be connected to only one computer.

In how many ways can he minimize the total length of the cables?
Compute the answer modulo 10^9+7.

Constraints

1 ≤ N ≤ 10^5

0 ≤ a_i, b_i ≤ 10^9

The coordinates are integers.

The coordinates are pairwise distinct.

Input

The input is given from Standard Input in the following format:

N
a_1
:
a_N
b_1
:
b_N

Output

Print the number of ways to minimize the total length of the cables, modulo 10^9+7.

Sample Input 1

2
0
10
20
30

Sample Output 1

2

There are two optimal connections: 0-20, 10-30 and 0-30, 10-20.
In both connections the total length of the cables is 40.

Sample Input 2

3
3
10
8
7
12
5

Sample Output 2

1

Solution in Python (3.4.3) (judge verdict: Wrong Answer)

from collections import deque
N = int(input())
a = [int(input()) for i in range(N)]
b = [int(input()) for i in range(N)]

mod = 10**9+7

a.sort()
b.sort()


a = deque(a)
b = deque(b)

ans = 1

power = [1 for i in range(10**5+1)]
for i in range(1, 10**5+1):
    power[i] = power[i-1]*i % mod

cnt = 0
while a and b:

    while b and b[-1] > a[-1]:
        b.pop()
        cnt += 1
        ans *= power[cnt] % mod
    if cnt == 0:
        a.pop()
        b.pop()
    for _ in range(cnt):
        a.pop()
    cnt = 0
print(ans % mod)