import sys import math def get_all_divisors(n): if n == 0: return [] divisors = set() i = 1 while i * i <= n: if n % i == 0: divisors.add(i) divisors.add(n // i) i += 1 return sorted(divisors) def compute_gcd(arr): current_gcd = arr[0] for num in arr[1:]: current_gcd = math.gcd(current_gcd, num) return current_gcd def solve(): input = sys.stdin.read().split() N = int(input[0]) A = list(map(int, input[1:N+1])) known = [x for x in A if x > 0] m = len(known) if m == 0: print("Yes") return if m == 1: print("Yes") return sorted_known = sorted(known) s0 = sorted_known[0] sm = sorted_known[-1] if s0 == sm: print("Yes") return diffs = [] for i in range(m-1): diffs.append(sorted_known[i+1] - sorted_known[i]) g = compute_gcd(diffs) if g == 0: print("Yes") return divisors = get_all_divisors(g) for d in divisors: if d <= 0: continue valid = True for s in sorted_known: if (s - s0) % d != 0: valid = False break if not valid: continue steps = (sm - s0) // d if steps + 1 > N: continue required = N - steps - 1 if required < 0: continue max_x = min(required, (s0 - 1) // d) if max_x >= 0: print("Yes") return print("No") if __name__ == "__main__": solve()