import sys import math from collections import deque,Counter #sys.setrecursionlimit(10**7) int1=lambda x: int(x)-1 mi=lambda :map(int,input().split()) li=lambda :list(mi()) mi1=lambda :map(int1,input().split()) li1=lambda :list(mi1()) mis=lambda :map(str,input().split()) lis=lambda :list(mis()) from collections import defaultdict """ d=defaultdict(int) #初期値 0 d=defaultdict(lambda:1) #初期値 1 """ mod=10**9+7 Mod=998244353 INF=10**18 ans=0 mod = 10**9+7 bignum = (10**6)*3 +1 fac = [1]*bignum ninv = [1]*bignum finv = [1]*bignum for i in range(2,bignum): fac[i] = fac[i-1]*i%mod ninv[i] = (-(mod//i)*ninv[mod%i])%mod finv[i] = finv[i-1]*ninv[i]%mod def comb(n,k): if k>n: return 0 return (fac[n]*finv[k]%mod)*finv[n-k]%mod n,m=mi() for i in range(m): t,x,y=mi() s=1 if t==1: s*=comb(x+y,x) s*=comb(2*n-(x+y+1),n-(x+1)) else: s*=comb(x+y,x) s*=comb(2*n-(x+y+1),n-(y+1)) ans-=s%mod ans+=comb(2*n,n)*2*(n) print(ans%mod)