## https://yukicoder.me/problems/no/2974 from functools import cmp_to_key MIN_X = - 10 ** 10 MAX_X = 10 ** 10 def compare(a, b): #数値を昇順ソート if a[0] * b[1] > a[1] * b[0]: return 1 elif a[0] * b[1] < a[1] * b[0]: return -1 else: return 0 def calc_gcd(A, B): """ 正の整数A, Bの最大公約数を計算する """ a = max(A, B) b = min(A, B) while a % b > 0: c = a % b a = b b = c return b class BinaryIndexTree: """ フェニック木(BinaryIndexTree)の基本的な機能を実装したクラス """ def __init__(self, size): self.size = size self.array = [[0, 0] for _ in range(size + 1)] def add(self, x, a): index = x while index <= self.size: self.array[index][0] += a[0] self.array[index][1] += a[1] index += index & (-index) def sum(self, x): index = x ans = [0, 0] while index > 0: ans[0] += self.array[index][0] ans[1] += self.array[index][1] index -= index & (-index) return ans def least_upper_bound(self, value): if self.sum(self.size) < value: return -1 elif value <= 0: return 0 m = 1 while m < self.size: m *= 2 k = 0 k_sum = 0 while m > 0: k0 = k + m if k0 < self.size: if k_sum + self.array[k0] < value: k_sum += self.array[k0] k += m m //= 2 if k < self.size: return k + 1 else: return -1 def calc_(K, L): if L == 0: return (0, 1) else: gcd = calc_gcd(abs(K), abs(L)) if K < 0: K *= -1 L *= -1 return (-1 * (L // gcd) , K // gcd) def main(): Q = int(input()) klmlx = [] for _ in range(Q): K, L, M, N, X = map(int, input().split()) klmlx.append((K, L, M, N, X)) # Xにおける座標圧縮 x_set = {(MIN_X, 1), (MAX_X, 1)} for K, L, M, N, X in klmlx: x_set.add((X, 1)) if K != 0: y = calc_(K, L) x_set.add(y) if M != 0: y = calc_(M, N) x_set.add(y) x_list = list(x_set) x_list = sorted(x_list, key=cmp_to_key(compare)) x_map = {} for i , a in enumerate(x_list): x_map[a] = i + 1 # 本編を解く bit = BinaryIndexTree(len(x_map)) for k, l, m, n, x in klmlx: if k == 0: if l > 0: bit.add(1, (0, l)) bit.add(len(x_map), (0, -l)) elif k > 0: f1 = calc_(k, l) bit.add(x_map[f1], (k, l)) bit.add(len(x_map), (-k, -l)) else: f1 = calc_(k, l) bit.add(1, (k, l)) bit.add(x_map[f1], (-k, -l)) if m == 0: if n > 0: bit.add(1, (0, -n)) bit.add(len(x_map), (0, n)) elif m > 0: f1 = calc_(m, n) bit.add(x_map[f1], (-m, -n)) bit.add(len(x_map), (m, n)) else: f1 = calc_(m, n) bit.add(1, (-m, -n)) bit.add(x_map[f1], (m, n)) x_ = x_map[(x, 1)] y1 = bit.sum(x_ - 1) y2 = bit.sum(x_) if y1[0] == 0 and y1[1] == 0 and y2[0] == 0 and y2[1] == 0: print("Yes") else: print("No") if __name__ == "__main__": main()