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

#include <bits/stdc++.h>
using namespace std;
long long mod = 1e18 + 7;
long long a[200005];
long long b[2000005];
map<long long, long long> m;
map<long long, long long> m1;
long long ans = 0;
bool comp(const pair<long long, long long>& a,
          const pair<long long, long long>& b) {
  if (a.first == b.first)
    return a.second < b.second;
  else
    return a.first > b.first;
}
bool revcomp(const pair<long long, long long>& a,
             const pair<long long, long long>& b) {
  if (a.first - a.second == b.first - b.second) return a.first > b.second;
  return (a.first - a.second) > (b.first - b.second);
}
long long ceil11(long long a, long long b) {
  if (a % b != 0)
    return a / b + 1;
  else
    return a / b;
}
long long power(long long a, long long b, long long n) {
  long long ans = 1;
  while (b > 0) {
    if (b % 2 == 1) ans = (ans * a) % n;
    a = (a * a) % n;
    b /= 2;
  }
  return ans;
}
long long count1 = 0;
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long primepos(long long fact, long long p) {
  long long res = 0;
  while (fact > 0) {
    res += fact / p;
    fact /= p;
  }
  return res;
}
long long bsearch(long long n, long long m) {
  long long mid = m / 2;
  long long ans = 0;
  while (mid >= 0 && mid <= n) {
    if (mid * 2 <= n) {
      ans = mid;
      if ((mid + 1) * 2 > n) break;
      mid = (mid + n) / 2;
    } else if (mid * 2 >= n) {
      mid = mid / 2;
    }
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(0);
  long long max1 = -1;
  long long min1 = 1e9 + 7;
  long long ans = 0;
  for (int i = 0; i < 4; i++) {
    cin >> a[i];
    ans += a[i];
    max1 = max(max1, a[i]);
    min1 = min(min1, a[i]);
  }
  if (min1 + max1 == ans / 2) {
    cout << "YES" << endl;
  } else {
    cout << "NO" << endl;
  }
  return 0;
}
