#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ld long double
const int mod = 1000000007;
int s, p;bool ans=0;
// Function to print the divisors 
void printDivisors() 
{ 
    // Note that this loop runs till square root 
    for (int i=1; i*i<=p; i++) 
    { 
        if (p%i == 0) 
        { 
            // If divisors are equal, print only one 
        	if((p/i + i) ==s){ans=1;break;}
        } 
    } 
} 
int32_t main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr); cout.tie(nullptr);

	cin>>s>>p;
	printDivisors();
	if(ans==1)cout<<"Yes\n";
	else cout<<"No\n";
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long double LD;
typedef vector<int> VI;
typedef vector<LL> VLL;
typedef vector<LD> VLD;
typedef vector<string> VS;
#define rep(i, max) for (LL i = 0; i < (LL)(max); i++)
#define repm(i, min, max) for (LL i = (LL)(min); i < (LL)(max); i++)
#define rev(i, max) for (LL i = (LL)(max) - 1; i >= 0; i--)
#define revm(i, min, max) for (LL i = (LL)(max) - 1; i >= (LL)(min); i--)

int main()
{
  LL S,P;
  cin>>S>>P;

  repm(n,1,min(S, (LL)sqrt(P)+1)){
    if(P%n==0){
      if(S-P/n==n){
        cout<<"Yes"<<endl;
        return 0;
      }
    }
  }

  cout<<"No"<<endl;
  return 0;
}
