import sys import math def readints(): return list(map(int, sys.stdin.readline().split())) def main(): N = int(sys.stdin.readline()) A = readints() S = [x for x in A if x != 0] K = N - len(S) if len(S) == 0: print("Yes") return elif len(S) == 1: print("Yes") return S.sort() diffs = [] for i in range(1, len(S)): diffs.append(S[i] - S[i-1]) d = math.gcd(diffs[0], diffs[1]) for diff in diffs[2:]: d = math.gcd(d, diff) if d == 0: all_same = True first = S[0] for s in S: if s != first: all_same = False break if all_same: print("Yes") else: print("No") return r = S[0] % d max_S = S[-1] lower = max(max_S - (N-1)*d, 1) upper = S[0] if lower > upper: print("No") return mod = lower % d if mod == r: a = lower else: delta = (r - mod + d) % d a = lower + delta if a > upper: print("No") return valid = True for s in S: if (s - a) % d != 0: valid = False break m = (s - a) // d if m < 0 or m >= N: valid = False break if not valid: print("No") return count_filled = 0 for i in range(N): val = a + i * d if val <= 0: print("No") return low = 0 high = len(S) - 1 found = False while low <= high: mid = (low + high) // 2 if S[mid] == val: found = True break elif S[mid] < val: low = mid + 1 else: high = mid - 1 if not found: count_filled += 1 if count_filled == K: print("Yes") else: print("No") if __name__ == "__main__": main()