#include <bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;
 
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;

int n;
vector<int>v;
string s;

int cache[20][200];

int dp(int i, int sum)
{
    if(i == n)
    {
        if(sum%3 == 0)
            return 0;
        else
            return 1e6;
    }
    int &ans = cache[i][sum];
    if(ans != -1)
        return ans;

    ans = 0;
    int add = s[i] - '0';
    ans = min(dp(i+1, sum+add), 1 + dp(i+1, sum));

    return ans;

}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    memset(cache, -1, sizeof(cache));

    cin>>s;
    n = s.size();
    int ans = dp(0, 0);
    if(ans == n)
        cout<<-1;
    else
        cout<<ans;
    return 0;
}
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<math.h>
#include<iomanip>
#include<set>
#include<numeric>
#include<cstring>
#include<cstdio>
#include<functional>
#include<bitset>
#include<limits.h>
#include<cassert>
#include<iterator>
#include<complex>
#include<stack>
#include<sstream>
#include<iterator>
#include<list>

using namespace std;

#define INF LLONG_MAX/5
#define MOD 1000000007
#define pi 3.14159265358979
#define int long long
#define rep(i, n) for (int i = 0; i < n; i++)
#define sort(v) sort((v).begin(), (v).end())
#define reverse(v) reverse((v).begin(), (v).end())
#define upper(v,hoge) upper_bound(v.begin(),v.end(),hoge)
#define lower(v,hoge) lower_bound(v.begin(),v.end(),hoge)
#define enld endl

void vout(vector<int>A) {
	rep(i, A.size()) {
		cout << A[i];
		if (i == A.size() - 1) {
			cout << endl;
		}
		else {
			cout << ' ';
		}
	}
}

void vvout(vector<vector<int>>A) {
	rep(i, A.size()) {
		rep(j, A[i].size()) {
			cout << A[i][j];
			if (j == A[i].size() - 1) {
				cout << endl;
			}
			else {
				cout << ' ';
			}
		}
	}
}


signed main() {
	vector<int>V(4);
	rep(i, 4) {
		cin >> V[i];
	}


	int N = 4;
	for (int S = 0; S < 1 << N; S++) {
		//作成
		vector<int>A;
		rep(i, N) {
			A.push_back(S >> i & 1);
		}
		int ans = 0;
		//操作
		rep(i, 4) {
			if (A[i] == 1) {
				ans += V[i];
			}
		}
		if (ans == V[0] + V[1] + V[2] + V[3] - ans) {
			cout << "Yes" << endl;
			return 0;
		}
	}
	cout << "No" << endl;
}
