N, M = map(int, input().split()) MOD = 10 ** 9 + 7 to = [[] for i in range(N + 1)] for i in range(M): u, v, l, a = map(int, input().split()) to[u].append([v, l, a, len(to[u])]) used = set() from collections import deque qu = deque([0]) dp = [[0, 0] for i in range(N + 1)] dp[0] = [1, 0] while len(qu): v = qu.popleft() for nv, l, a, i in to[v]: if (v, nv, i) in used: print("INF") exit() dp[nv][0] = (dp[v][0] * a + dp[nv][0]) % MOD dp[nv][1] = ((dp[v][1] + l) * a + dp[nv][1]) % MOD used.add((v, nv, i)) qu.append(nv) print(dp[N][1])