#include <bits/stdc++.h>
#define all(a) (a).begin(), (a).end()
using namespace std;
using ll  = long long int;
using pii = pair<ll, ll>;
#define LOCAL
#ifdef LOCAL
#define trace(...) _f(#__VA_ARGS__, __VA_ARGS__)
#else
#define trace(...) 0
#endif
template <typename T> void _f(const char* name, T&& arg1){
    cerr << name << ": " << arg1 << endl;
}
template <typename T, typename... Args>
void _f(const char* names, T&& arg1, Args&&... args){
    const char* comma = strchr(names + 1, ',');
    cerr.write(names, comma - names) << ": " << arg1 << " |";
    _f(comma + 1, args...);
}

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


int main() {
    ios::sync_with_stdio(false);cin.tie(0);
    int t=1;;while(t--)solve();return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0; i<(int)(n); ++i)
#ifdef _DEBUG
#define _GLIBCXX_DEBUG
#define DEBUG(x) cerr << '(' << __LINE__ << ") " << #x << ": " << x << endl;
#else
#define DEBUG(x)
#endif

int main() {
  vector<int> a(3);
  rep(i,3) cin >> a[i];
  sort(a.begin(),a.end());
  if (a[2]-a[1]==a[1]-a[0]) cout << "Yes" << endl;
  else cout << "No" << endl;


}

// end
