#include <bits/stdc++.h>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
#define me0(a) memset(a,0,sizeof(a))
#define me1(a) memset(a,-1,sizeof(a))
#define op freopen("in.txt", "r", stdin)
#define op1 freopen("C:\\acm\\Cproj\\in.txt","r",stdin);
#define pr freopen("C:\\acm\\Cproj\\out.txt","w",stdout)
#define pr2 freopen("C:\\acm\\Cproj\\std.txt","w",stdout)
#define pii pair<int,int>
#define Please return
#define AC 0
using namespace std;
const int INF = 0x3f3f3f3f;
typedef long long LL;
template <class T>
void read(T &val) { T x = 0; T bz = 1; char c; for (c = getchar(); (c<'0' || c>'9') && c != '-'; c = getchar()); if (c == '-') { bz = -1; c = getchar(); }for (; c >= '0' && c <= '9'; c = getchar()) x = x * 10 + c - 48; val = x * bz; }
const int mod=998244353;
const int maxn = 1e6+10;

int n,m,a[maxn],q,t;
char s[maxn];

int flag;
void dfs(int step,LL nw){
    if(step>4){
        if(nw==0) flag = 1;
        return;
    }
    if(a[step]<=nw) dfs(step+1,nw-a[step]);
    dfs(step+1,nw);
}

int main(){
    LL sum = 0;
    fo(i,1,4) read(a[i]),sum+=a[i];
    if(sum&1){
        puts("No");return 0;
    }
    dfs(1,sum/2);
    if(flag) puts("Yes");
    else puts("No");
    Please AC;
}
#include<bits/stdc++.h>
#define ll long long
ll a,b,c,d,s;
int main(){
    scanf("%lld%lld%lld%lld",&a,&b,&c,&d);s=a+b+c+d;
    if(a==s-a||b==s-b||c==s-c||d==s-d)puts("Yes");
    else if(a+b==s-a-b||a+c==s-a-c||a+d==s-a-d||b+c==s-b-c||b+d==s-b-d||c+d==s-c-d)puts("Yes");
    else puts("No");
    return 0;
}