N, M = map(int, input().split()) MOD = 10**9+7 def combination_mod(n: int, m: int, mod: int = MOD) -> int: """ (N + M)! / (N! * M!) % mod を計算する関数 計算量: O(N + M) """ total = n + m # 分子の (N + M)! を計算 num = 1 for i in range(1, total + 1): num = (num * i) % mod # 分母の N! * M! を計算 den_n = 1 for i in range(1, n + 1): den_n = (den_n * i) % mod den_m = 1 for i in range(1, m + 1): den_m = (den_m * i) % mod den = (den_n * den_m) % mod # フェルマーの小定理を用いて分母の逆元を計算し、乗算する # den^(mod - 2) % mod return (num * pow(den, mod - 2, mod)) % mod ANS = combination_mod(N,N) * (N+N) ANS %=MOD FREE = 0 for j in range(M): t, x, y = map(int, input().split()) if t == 1: FREE += combination_mod(y, x) * combination_mod(N-x-1, N-y) else: FREE += combination_mod(y, x) * combination_mod(N-x, N-y-1) FREE %= MOD ANS -= FREE ANS %= MOD print(ANS)