## https://yukicoder.me/problems/no/2812 import heapq def main(): N = int(input()) A = list(map(int, input().split())) A.sort() m_array = [] p_queue = [] for a in A: if a < 0: m_array.append(a) elif a > 0: heapq.heappush(p_queue,a) if len(m_array) == 0 and len(p_queue) == 0: print("Yes") return m_index = len(m_array) - 1 while m_index >= 0: m = m_array[m_index] while m < 0 and len(p_queue) > 0: a = heapq.heappop(p_queue) m += a if m >= 0: heapq.heappush(p_queue, m) m_index -= 1 else: break if m_index == -1 and len(p_queue) == 1: print("Yes") elif m_index == 0 and len(p_queue) == 0: print("Yes") else: print("No") if __name__ == "__main__": main()