MOD = 10**9+7 N,M = list(map(int,input().split())) free = [] for _ in range(M): t,x,y = list(map(int,input().split())) free.append((t,x,y)) frac = [1] for i in range(1,3*10**5+1): frac.append(frac[-1] * i % MOD) def nCr(n,r): assert r >= 0 return frac[n] * pow(frac[n-r],-1,MOD) * pow(frac[r],-1,MOD) % MOD ans = nCr(2*N,N) * 2 * N % MOD for t,x,y in free: if(t == 2): ans -= nCr(x+y,x) * nCr(N-x + N-(y+1),N-x) else: ans -= nCr(x+y,x) * nCr(N-(x+1) + N-y,N-y) ans %= MOD print(ans)