#include <algorithm>
#include <cassert>
#include <iostream>
#include <memory>
#include <numeric>

#include <array>
#include <deque>
#include <map>
#include <set>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
  #include <vector>

#include <cstring>
#include <ostream>
#include <type_traits>
#include <utility>
#include <chrono>
#include <random>

#ifdef ONLINE_JUDGE
#pragma GCC optimize ("O3")
#pragma GCC target ("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
  #endif

using namespace std;

using uint64 = uint64_t;
using int64 = int64_t;
using uint32 = uint32_t;
using vi = vector<int>;

#define seq(i,a,b) for (auto i = (a); i < (b); ++i)
#define rev(i,a,b) for (auto i = (b)-1; i >= (a); --i)
#define sz(x) ((int)x.size())
#define all(x) x.begin(), x.end()
#define dbg(x) {cerr << #x << ": " << x << endl;}

int main()
{
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int64 s,p; cin >> s >> p;
  int64 i = 1;
  while (i*i <= p) {
    if (p%i == 0) {
      if (i + p/i == s) {
        cout << "Yes" << endl;
        return 0;
      }
    }
    ++i;
  }
  cout << "No" << endl;
}

///OM
///SUVOM SHAHA
///AUST CSE 39

#include<bits/stdc++.h>
#define loo(i, n) for(int i = 0; i < n; i++)
#define mod 1000000007
#define pb push_back
#define ff first
#define sc second
#define ii pair<int, int>
#define vi vector<int>
#define vii vector<ii>
#define ll long long int
#define inf 1000000000
#define mpch map<char, int>
#define mpint map<int, int>
#define endl '\n'
//to iterate map :for (auto i : mp):

using namespace std;

int main(void)

{
    int a, b, i, j = 0;
    cin>>a>>b;
    int ara[a+b], n = a+b;
    if(a >= b){
        for(i = 0; i < a; i++){
            ara[i] = i+1;
            j += ara[i];
        }
        for(i = a; i < n-1; i++){
            ara[i] = -(ara[i-a]);
            j += ara[i];
        }
        ara[n-1] = -(j);
    }
    else{
        for(i = 0; i < b; i++){
            ara[i] = -(i+1);
            j -= ara[i];
        }
        for(i = b; i < n-1; i++){
            ara[i] = -(ara[i-b]);
            j -= ara[i];
        }
        ara[n-1] = j;
    }
    for(i = 0; i < n; i++){
        if(i == n-1)cout<<ara[i]<<endl;
        else cout<<ara[i]<< " ";
    }
    return 0;
}
