44 58 90 53
 20 14 37 71
 4 2 4 2
 1 2 5 5
 1 2 8 9
 99 100 3 98
 92 69 83 97
 3 1 1 1
 18 88 18 18
 1 1 1 1
 69 7 44 30
 90 30 30 30
 1 2 3 5
 1 1 3 1
 6 3 6 6
 26 52 7 19
 6 4 8 6
 10 2 3 5
 34 11 84 39
 1 1 14 12
 3 2 1 1
 2 4 6 6
 1 1 2 1
 72 96 2 26
 97 95 91 27
 1 2 1 3
 1 1 2 3
 1 1 1 2
 1 1 10 20
 2 3 2 5
 1 2 10 7
 2 1 28 9
 4 4 4 8
 2 2 4 6
 72 52 62 62
 76 97 99 74
 100 100 99 100
 30 74 41 63
 5 10 1 6
 18 17 17 20
 2 4 1 1
 7 3 6 3
 1 1 4 5
 2 2 6 2
 1 2 6 3
 3 5 1 3
 70 100 10 86
 48 14 3 31
 2 6 3 2
 2 3 10 10
 4 4 12 4
 14 9 10 6
 100 98 99 97
 5 7 1 3
 1 1 4 2
 14 10 18 24
 1 100 100 1
 1 2 4 5
 1 2 3 4
 1 2 3 3
 4 4 4 5
 66 68 16 82
 1 2 3 2
 2 3 3 4
 100 100 100 100
 1 2 2 7
 3 14 36 53
 1 1 3 4

NO
 YES
 YES
 NO
 YES
 NO
 NO
 YES
 NO
 YES
 NO
 YES
 NO
 YES
 NO
 YES
 YES
 YES
 YES
 YES
 NO
 NO
 NO
 YES
 NO
 NO
 NO
 NO
 NO
 NO
 YES
 NO
 NO
 NO
 YES
 YES
 NO
 YES
 YES
 NO
 YES
 NO
 NO
 YES
 YES
 YES
 NO
 YES
 NO
 NO
 YES
 NO
 YES
 YES
 YES
 NO
 YES
 YES
 YES
 NO
 NO
 NO
 YES
 YES
 YES
 NO
 YES
 NO

# Dynamic Programming based python 
# program to partition problem 

# Returns true if arr[] can be 
# partitioned in two subsets of 
# equal sum, otherwise false 
def findPartition(arr, n): 
	sum = 0
	i, j = 0, 0
	
	# calculate sum of all elements 
	for i in range(n): 
		sum += arr[i] 
	
	if sum % 2 != 0: 
		return False 
	
	part = [[ True for i in range(n + 1)] 
				for j in range(sum // 2 + 1)] 
	
	# initialize top row as true 
	for i in range(0, n + 1): 
		part[0][i] = True
		
	# intialize leftmost column, 
	# except part[0][0], as 0 
	for i in range(1, sum // 2 + 1): 
		part[i][0] = False
	
	# fill the partition table in 
	# bottom up manner 
	for i in range(1, sum // 2 + 1): 
		
		for j in range(1, n + 1): 
			part[i][j] = part[i][j - 1] 
			
			if i >= arr[j - 1]: 
				part[i][j] = (part[i][j] or
							part[i - arr[j - 1]][j - 1]) 
		
	return part[sum // 2][n] 
	


arr = [] 
arr = list(map(int,input().split()))
if findPartition(arr, len(arr)) == True: 
	print ("Yes") 
else: 
	print ("No") 

