#include <iostream>
using namespace std;
typedef long long ll;

int main()
{
    ll s, p;
    cin >> s >> p;
    for(ll i = 1; i * i <= p; i++){
        if(p % i == 0 && i + p / i == s){
            cout << "Yes" << endl;
            return 0;
        }
    }
    cout << "No" << endl;
}

#include <bits/stdc++.h>
using namespace std;

#define ll              long long int
#define scan(any)       for(auto &i:any) cin>>i;
#define print(any)      for(auto i:any) cout<<i<<" "; 
#define endl            '\n'
#define pb              push_back
#define vll             vector<ll> 
#define f(i,x,y)        for(i=x;i<y;i++)
#define INF             LLONG_MAX
#define s(x)            sort(x.begin(),x.end())
#define all(v)          v.begin(),v.end()
#define p2(n,x)         cout << fixed << setprecision(x) <<n<<endl; 
#define pll             pair<ll,ll> 
#define ff              first
#define ss              second
#define blt(x)          __builtin_popcount(x)

void solve()
{
    ll i,j,b,s,p;
    cin>>s>>p;
    for(i=1;i<=(int)sqrt(p);i++)
    {
    	if(p%i==0)
    	{
    		if(i+(p/i)==s)
    		{
    			cout<<"Yes";
    			return ;
    		}
    	}
    }
    cout<<"No\n";
}

int main()
{
    #ifdef Sudarshan
        freopen("F:/Programming/input.txt", "r", stdin);
        freopen("F:/Programming/output.txt", "w", stdout);
    #endif

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