from operator import itemgetter mod = 10 ** 9 + 7 fact = [1] * 3333 for i in range(1, 3333): fact[i] = fact[i-1] * i % mod N = int(input()) down = 0 tX = [] for _ in range(N): t, x = map(int, input().split()) if t == 0: down += 1 tX.append((t, x)) else: tX.append((t, x-1)) tX.sort(key=itemgetter(1)) dp = [0] * (N + 1) dp[0] = 1 for t, x in tX: ndp = [0] * (N + 1) for i in range(N): ndp[i+1] = dp[i] * max(0, x-i) % mod if t == 1: for i in range(N+1): ndp[i] += dp[i] ndp[i] %= mod dp = ndp ans = 0 sgn = 1 for i in range(down, N+1): ans += sgn * dp[i] * fact[N-i] % mod ans %= mod sgn = -sgn print(ans)