#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define all(v) v.begin(), v.end()
#define rep(i, n) for (ll i = 0; i < (ll)(n); i++)
#define repr(i, n) for (ll i = (n-1); i >= 0; i--)
#define Rep(n) for (ll _ = 0; _ < (ll)(n); _++)

template <class S>S sum(vector<S>& a) {return accumulate(all(a), S());}
template <class S>S max(vector<S>& a) {return *max_element(all(a));}
template <class S>S min(vector<S>& a) {return *min_element(all(a));}
ll max(int a, ll b) { return max((ll)a, b); } ll max(ll a, int b) { return max(a, (ll)b); }
ll min(int a, ll b) { return min((ll)a, b); } ll min(ll a, int b) { return min(a, (ll)b); }

void Main();
int main() {
  cin.tie(nullptr);
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(20);
  Main();
  return 0;
}

void Main(){
  int a,b,c,d; cin>>a>>b>>c>>d;
  int s = (a+b+c+d);
  if(s % 2){
    cout << "No\n";
    return;
  }else{
    s /= 2;
    if(a == s || b == s || c == s || d == s || a+b == s || a+c == s || a+d == s){
      cout << "Yes\n";
    }else{
      cout << "No\n";
    }
  }
}

#include <iostream>
#include <vector>

using namespace std;

int main(){
    vector<int> a(4);
    int sum = 0;

    for(int i = 0; i < 4; i++){
        cin >> a.at(i);
        sum += a.at(i);
    }

    for(int bit = 0; bit < (1<<4); bit++){
        int eat = 0;
        for(int i = 0; i < 4; i++){
            if(bit & (1<<i)){
                eat += a.at(i);
            }
        }
        if((sum-eat) == eat){
            cout << "Yes" << endl;
            return 0;
        }
    } 
    cout << "No" << endl;
}
