import math def main(): import sys input = sys.stdin.read data = input().split() idx = 0 N = int(data[idx]) idx +=1 X = int(data[idx]) idx +=1 Y = int(data[idx]) idx +=1 R = list(map(int, data[idx:idx+N])) idx += N sum_R = sum(R) D = math.hypot(X, Y) # Handle N=1 case if N == 1: if (X == 0 and Y == 0) or (X**2 + Y**2 == R[0]**2): print("Yes") else: print("No") return # For each possible R_last for r_last in R: # Compute the remaining elements temp = [x for x in R if x != r_last] if len(temp) == 0: # All elements are r_last, but since N >=2, len(temp) can't be zero here pass else: min_r_first = min(temp) max_r_first = max(temp) min_val = 2 * sum_R - max_r_first - r_last max_val = 2 * sum_R - min_r_first - r_last lower = D - r_last upper = D + r_last # Check overlap if (max_val >= lower) and (min_val <= upper): print("Yes") return # Check for the case where one R_last is the same as others, but minimal/maximal # Also, when R_last is the minimal or maximal, but R_first can be arranged # Additionally, check if the sum of all R's is sufficient # But for the third sample, this approach fails # So, perhaps another condition is needed # The problem is that the initial approach doesn't consider that the sum can be arranged to have |S| >= D - R_last even if S_total is larger # Thus, perhaps if sum_R >= D: if sum_R >= D: print("Yes") return print("No") if __name__ == "__main__": main()