def bellman_ford(n, edges, start, initial_money): dist = [-float('inf')] * n dist[start] = initial_money for _ in range(n - 1): for u, v, rate, commission in edges: if dist[u] > 0: new_amount = (dist[u] - commission) * rate if new_amount > dist[v]: dist[v] = new_amount for u, v, rate, commission in edges: if dist[u] > 0: new_amount = (dist[u] - commission) * rate if new_amount > dist[v]: return True return False n, m, s, v = map(float, input().split()) edges = [] n = int(n) m = int(m) s = int(s) for _ in range(m): a, b, rab, cab, rba, cba = map(float, input().split()) a, b = int(a) - 1, int(b) - 1 edges.append((a, b, rab, cab)) edges.append((b, a, rba, cba)) if bellman_ford(n, edges, s - 1, v): print("YES") else: print("NO")