M = 10 ** 9 + 7 I = [1, 1] F = I[:] R = I[:] n = int(input()) - 1 for i in range(2, n + 1): z = (M - M // i) * I[M % i] % M I.append(z) F.append(i * F[-1] % M) R.append(z * R[-1] % M) r = len(set(map(min, [map(int, input().split()) for _ in range(n)]))) print(1 if r < 1 else F[n]**2 * R[r] * R[n - r] * R[r - 1] * R[n - r + 1] * I[n] % M)