#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
using namespace std;
using Graph = vector<vector<int>>;
const long long INF = 1LL << 60;
typedef long long ll;
const ll MOD = 998244353;
int main() {
    //cout << std::fixed << std::setprecision(15) ;
    bool frg = false;
    vector<int> data(4);
    for(int i=0;i<4;i++){
        cin >> data[i];
    }
    // vector で取り込めばsortを使用できるので圧倒的にこちらの解答の方が楽
    sort(data.begin(),data.end());
    // sort するのでif文だけでできる
    if(data[0]+data[3]==data[2]+data[1]||data[0]+data[2]==data[1]+data[3]||data[3]==data[0]+data[1]+data[2]) frg = true;

    if(frg) cout << "Yes" << endl;
    else cout << "No" << endl;
}
#include <iostream>
#include <vector>
#include <utility>
#include <queue>
#include <vector>
#include <list>
#include <cmath>
#include <deque>
#include <utility>
#include <climits>
#include <unordered_map>
#include <unordered_set>
#include <cstdlib>
#include <string>
#include <stack>
#include <set>
#include <functional>
#include <iterator>
#include <algorithm>

using namespace std;

typedef long long ll;


class UnionFind {
private:
    vector<int> f;
    int _components;
public:
    explicit UnionFind(int sz): f(sz), _components(sz) {
        for (int i = 0; i < sz; i++) {
            f[i] = i;
        }
    }

    int find(int x) {
        if (x == f[x]) return x;
        int fa = f[x];
        return f[x] = find(fa);
    }

    void add(int x, int y) {
        int fx = find(x), fy = find(y);
        if (fx != fy) {
            _components--;
        }
        f[fx] = fy;
    }
    int components() const {
        return _components;
    }
};

ll gcd(ll a, ll b) {
    if (b == 0)return a;
    else return gcd(b, a%b);
}



int main(int argc, char *argv[]) {
    std::ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    ll n;
    cin >> n;
    vector<int> digits;
    while (n > 0) {
        digits.push_back(n % 10);
        n/=10;
    }
    reverse(digits.begin(), digits.end());

    int r = digits.size() - 1;
    while (r >= 0 && digits[r] == 0) {
        r--;
    }

    bool flag = true;
    int l = 0;
    while (l < r) {
        if (digits[l] != digits[r]) {
            flag = false;
            break;
        } else {
            l++;
            r--;
        }
    }
    if (flag) {
        cout << "Yes" << endl;
    } else {
        cout << "No" << endl;
    }
}