#include<bits/stdc++.h>
using namespace std;

#define rep(i,n) for(int i=0;i<(n);++i)
#define FOR(i,n,j) for(int i=(j);i<(n);++i)
#define ssort(n) sort((n).begin(),(n).end())
#define rsort(n) sort((n).begin(),(n).end(),greater<int>())
#define mp make_pair
using ll=long long;
using ld=long double;
typedef pair<int,int> P;
typedef pair<P,int> COST;
#define repl(i,n) for(ll i=0;i<(n);++i)
#define Yes cout << "Yes" << endl
#define No cout << "No" << endl
#define YES cout << "YES" << endl
#define NO cout << "NO" << endl
using GrafPair=vector<vector<P>>;
using Graf=vector<vector<int>>;
#define MAX 1000000007

int main()
{
    vector<ll> num(4);
    cin >> num[0] >> num[1] >> num[2] >> num[3];
    ll sum=0;

    int n=4;

    rep(i,4)sum+=num[i];

    for (int bit = 0; bit < (1<<n); ++bit)
    {
        /* bit で表される集合の処理を書く */

        ll tmp=0;
        /* きちんとできていることを確認してみる */
        // bit の表す集合を求める
        vector<int> S;
        for (int i = 0; i < n; ++i) {
            if (bit & (1<<i)) { // i が bit に入るかどうか
                S.push_back(i);
            }
        }

        // bit の表す集合の出力
        
        if(S.size()>=1)
        for (int i = 0; i < (int)S.size()-1; ++i) {
            tmp+=num[S[i]];
        }
        if(tmp==sum-tmp){
            Yes;return 0;
        }
    }
    No;

}
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair<ll,ll> P;
typedef vector<ll> VI;
typedef vector<VI> VVI;
const ll MOD = 1000000007;
const ll INF = 1e18;
#define REP(i,n) for(int i=0;i<n;i++)
#define ALL(v) v.begin(),v.end()

int main(){
	VI a(4); REP(i,4) cin >> a[i];
	ll sum=0;
	REP(i,4) sum+=a[i];
	bool yes=0;
	REP(i,1<<4){
		if(i==0)
			continue;
		ll s=0;
		REP(j,4){
			if(i>>j&1)
				s+=a[j];
		}
		if(s*2==sum)
			yes=1;
	}
	if(yes)
		cout << "Yes" << endl;
	else
		cout << "No" << endl;
	return 0;
}