N, M = map(int, input().split()) TXY = [list(map(int, input().split())) for _ in range(M)] # 逆元を利用してcomb(nCk), perm(nPk)をO(1)計算 MOD = 10 ** 9 + 7 num = 2 * N + 1 fac = [1] * (num + 1) inv = [1] * (num + 1) for j in range(1, num + 1): fac[j] = (fac[j - 1] * j) % MOD inv[num] = pow(fac[num], MOD-2, MOD) for j in range(num - 1, -1, -1): inv[j] = (inv[j + 1] * (j + 1)) % MOD def comb(n, r): if r > n or n < 0 or r < 0: return 0 return (fac[n] * inv[n - r] * inv[r]) % MOD def perm(n, r): if r > n or n < 0 or r < 0: return 0 return comb(n, r) * fac[r] % MOD ans = comb(2 * N, N) * 2 * N for t, x, y in TXY: if t == 1: ans -= comb(x + y, x) * comb(2 * N - (x + y) - 1, N - y) else: ans -= comb(x + y, x) * comb(2 * N - (x + y) - 1, N - x) ans %= MOD print(ans % MOD)