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

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Solution {
    static ArrayList<trip> ll;
    public static void main(String[] args){
        try{
            BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
            String[] ss=br.readLine().split(" ");
            int[] arr=new int[4];
            for(int i=0;i<4;i++){
                arr[i]=Integer.parseInt(ss[i]);
            }
            Arrays.sort(arr);
            if(arr[0]+arr[1]+arr[2]==arr[3] || arr[0]+arr[2]==arr[1]+arr[3] || arr[0]+arr[3]==arr[1]+arr[2]){
                System.out.println("YES");
            }else{
                System.out.println("NO");
            }




        }catch(Exception e){
            System.out.println("KKKK "+e.getMessage());
        }
    }

    static class trip{
        int lev,node,child;
        public trip(int lev,int node,int child){
            this.lev=lev;
            this.node=node;
            this.child=child;
        }
    }
    static void bfs(ArrayList<ArrayList<Integer>> list){
        Queue<trip> q=new ArrayDeque<>();
        q.add(new trip(0,0,list.get(0).size()));
        boolean[] brr=new boolean[list.size()];
        brr[0]=true;
        while(q.size()>0){
            trip t=q.poll();
            if(t.child==0) {
                ll.add(t);
            }

            int node=t.node;
            for(int i=0;i<list.get(node).size();i++){
                int u=list.get(node).get(i);
                if(!brr[u]){
                    q.add(new trip(t.lev+1,u,list.get(u).size()));
                    brr[u]=true;
                }
            }
        }
    }
    static void shuffle(int[] a) {
        Random get = new Random();
        for (int i = 0; i < a.length; i++) {
            int r = get.nextInt(a.length);
            int temp = a[i];
            a[i] = a[r];
            a[r] = temp;
        }
    }
}
