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.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;

public class Main {
  static long a, b, MOD = 1000000000 + 7;

  static class Student implements Comparable<Student> {
    long a, b;
    int count = 0;

    Student(long a) {
      this.a = a;
    }

    @Override
    public int compareTo(Student o) {
      return -Long.compare(o.a, a);
    }

    @Override
    public String toString() {
      return "Student [a=" + a + ", b=" + b + "]";
    }

  }

  static boolean isSubset(long a, long b) {
    for (int i = 0; i < 60; i++) {
      if (((1 << i) & a) > 0 && ((1 << i) & b) == 0) {
        return true;
      }
    }
    return false;
  }

  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int[] nums = new int[4];
    for (int i = 0; i < 4; i++) {
      nums[i] = sc.nextInt();
    }
    Arrays.sort(nums);
    boolean valid = nums[0] + nums[3] == nums[1] + nums[2];
    System.out.println(valid ? "YES" : "NO");
  }
}