from itertools import pairwise def gcd(*numbers: int) -> int: if len(numbers) == 1: return numbers[0] if len(numbers) == 2: a, b = numbers if a < b: a, b = b, a while True: if a % b == 0: return b a, b = b, a % b first_gcd = gcd(*numbers[:2]) return gcd(first_gcd, *numbers[2:]) def is_positive(num: int) -> bool: return num > 0 def main(): N = int(input()) A = list(map(int, input().split())) A_fixed = list(filter(is_positive, A)) if len(A_fixed) in (0, 1): print("Yes") return A_fixed.sort() A_diff = [a_elm2 - a_elm1 for a_elm1, a_elm2 in pairwise(A_fixed)] if (diff_zero_num := A_diff.count(0)): if diff_zero_num == len(A_diff): print("Yes") else: print("No") return A_diff_gcd = gcd(*A_diff) A_diff_interpolated_num = list(map( lambda num: num // A_diff_gcd - 1, A_diff)) if sum(A_diff_interpolated_num) <= len(A) - len(A_fixed): print("Yes") else: print("No") if __name__ == "__main__": main()