/*
   om namah shivay 
*/
#include<bits/stdc++.h>
using namespace std;
#define gc getchar_unlocked
#define REP(i,a,b) for(i=a;k<n?i<n:i>n;k<n?i+=1:i-=1)
#define ll long long
#define si(x)	scanf("%d",&x)
#define sl(x)	scanf("%lld",&x)
#define ss(s)	scanf("%s",s)
#define pi(x)	printf("%d\n",x)
#define pl(x)	printf("%lld\n",x)
#define ps(s)	printf("%s\n",s)
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define clr(x) memset(x, 0, sizeof(x))
#define sortall(x) sort(all(x))
#define tr(it, a) for(auto it = a.begin(); it != a.end(); it++)
#define PI 3.1415926535897932384626
typedef pair<int, int>	pii;
typedef pair<ll, ll>	pl;
typedef vector<int>		vi;
typedef vector<ll>		vl;
typedef vector<pii>		vpii;
typedef vector<pl>		vpl;
typedef vector<vi>		vvi;
typedef vector<vl>		vvl;
mt19937_64 rang(chrono::high_resolution_clock::now().time_since_epoch().count());
int rng(int lim) 
{
    uniform_int_distribution<int> uid(0,lim-1);
    return uid(rang);
}
int mpow(int base, int exp); 

const int mod = 1'000'000'007;


//=======================


void solve() 
{
   ll int m,h;
   cin>>m>>h;
   if(h%m==0)
   cout<<"Yes"<<endl;
   else
   {
       cout<<"No"<<endl;
   }
   
}

int main()
{
    ll int t = 1;
    //cin >> t;
    while(t--) 
    {
      solve();
    }
    return 0;
}

ll int mpow(ll int base,ll int exp) 
{
  base %= mod;
  ll int result = 1;
  while (exp > 0) 
  {
    if (exp & 1) result = ((ll)result * base) % mod;
    base = ((ll)base * base) % mod;
    exp >>= 1;
  }
  return result;
}

// clang++ -std=c++14 probA.cpp
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <limits>
#include <string>
#include <cassert>
#include <unordered_map> 
using namespace std;
typedef long long ll;
typedef long long LL;
typedef pair<int,int> pii;
#define forup(i,a,b) for(int i=a; i<b; ++i)
#define fordn(i,a,b) for(int i=a; i>b; --i)

#define rep(i,a) for(int i=0; i<a; ++i)
 
#define dforup(i,a,b) for(i=a; i<b; ++i)
#define dfordn(i,a,b) for(i=a; i>b; --i)
#define drep(i,a) for(i=0; i<a; ++i)
 
// #define slenn(s,n) for(n=0; s[n]!=13 and s[n]!=0; ++n);s[n]=0
 
#define gi(x) scanf("%d",&x)
#define gl(x) cin>>x
#define gd(x) scanf("%lf",&x)
#define gs(x) scanf("%s",x)
 
#define pis(x) printf("%d ",x)
#define pin(x) printf("%d\n",x)
#define pls(x) cout<<x<<" "
#define pln(x) cout<<x<<"\n"
#define pds(x) printf("%.12f ",x)
#define pdn(x) printf("%.12f\n",x)
#define pnl() printf("\n")
#define vec vector<int>
#define fs first
#define sc second
 
#define pb push_back
 
const int inv=1000000000;
const int minv=-inv;
 
const int max_n=200000+5;
 
int n,r;
int b[max_n];
vector<int> chl[max_n];
 
int depth[max_n];
LL res;
vector<int> sol;
vector<pii> q;
bool used[max_n];
set<pii,greater<pii> > Sdec;
set<pii,greater<pii> >::iterator it;

// #include <algorithm>
// int bin_sea .rc
// vector<int> travel {0,1};

bool cmp(const vector<int> &a,const vector<int> &b) 
{ 
    if (a[0] == b[0])
        return a[1]>b[1];
	return a[0]<b[0]; 
} 


vector<int> visited(2*(100000)+2, -1);
vector<int> ans(2*(1000000)+2, -1);



void solve(){
    vector<int> arr;
    for (int i = 0;i<4;i++){
        int x;
        gi(x);
        arr.push_back(x);
    }
    sort(arr.begin(),arr.end());
    if (arr[0] + arr[1] +arr[2] == arr[3]){
        cout<<"Yes"<<endl;
    }
    else if (arr[0] + arr[3] == arr[1] +arr[2] )
         cout<<"Yes"<<endl;
    else
        cout<<"No"<<endl;

    return;


}
	

int main()
{
    ll test = 1;
   for (int i = 0;i<test;i++){
       solve();
   }

}
