#include<bits/stdc++.h>
#define LL long long
using namespace std;
LL a[9];
template<typename T>
inline void read(T &x)
{
	x=0;T w=1;char c=getchar();
	while(!isdigit(c)){if(c=='-')w=-1;	c=getchar();}
	while(isdigit(c)){x=(x<<3)+(x<<1)+c-'0';	c=getchar();}
	x*=w;
}
int main()
{
	for(LL i=1;i<=4;++i)
		read(a[i]);
	sort(a+1,a+5);
	printf(a[1]+a[4]==a[2]+a[3]||a[1]+a[2]+a[3]==a[4]?"Yes":"No");
	return 0;
}
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>
#include <cstring>
#include <utility>
#include <numeric>

using namespace std;

int main(){

    int N;
    cin >> N;
    vector<int> A(2 * N);
    for(int i = 0; i < 2 * N; i++){
        cin >> A[i];
    }

    vector<pair<int, int>> aIndex(2 * N);
    for(int i = 0; i < 2 * N; i++){
        aIndex[i] = make_pair(A[i], i);
    }

    sort(aIndex.begin(), aIndex.end());

    vector<bool> isLower(2 * N, false);
    for(int i = 0; i < N; i++){
        isLower[aIndex[i].second] = true;
    }
    
    string ans = "";
    int cnt = 0;
    bool lowerOpen = false;
    for(int i = 0; i < 2 * N; i++){
        if(cnt == 0){
            ans += "(";
            cnt++;
            if(isLower[i]){
                lowerOpen = true;
            }
            else{
                lowerOpen = false;
            }
        }
        else{
            if(isLower[i]){
                if(lowerOpen){
                    ans += "(";
                    cnt++;
                }
                else{
                    ans += ")";
                    cnt--;
                }
            }
            else{
                if(lowerOpen){
                    ans += ")";
                    cnt--;
                }
                else{
                    ans += "(";
                    cnt++;
                }
            }
        }
    }

    cout << ans << endl;

    return 0;
}