#include <bits/stdc++.h>

using namespace std;

typedef long long i64;
typedef unsigned long long ui64;
typedef vector<i64> vi;
typedef vector<vi> vvi;
typedef pair<i64, i64> pi;

#define pb push_back
#define sz(a) i64((a).size())
#define all(c) (c).begin(), (c).end()
#define REP(s, e, i) for(i=(s); i < (e); ++i)
inline void RI(i64 &i) {scanf("%lld", &(i));}
inline void RVI(vi &v) { for(i64 i=0;i<sz(v);++i) { RI(v[i]); } }
inline void RVVI(vvi &vv) { for(i64 i=0;i<sz(vv);++i) { RVI(vv[i]); } }
#define BUF_LENGTH 1000000
inline void RS(string &s) {static char buf[BUF_LENGTH]; scanf("%s", buf); s = buf;}


int main(int argc, char *argv[]) {
  i64 S, P;
  cin >> S >> P;
  i64 N = 1;
  while(N * N <= P) {
    if(P % N == 0) {
      i64 M = P / N;
      if(N + M == S) {
        cout << "Yes" << endl;
        return 0;
      }
    }
    ++N;
  }
  cout << "No" << endl;

  return 0;
}

#include <stdio.h>

constexpr unsigned char H[16] = {0, 1, 0, 3, 1, 1, 1, 1, 0, 1, 2, 2, 3, 1, 2, 3};

int main() {
  unsigned char n, k;
  scanf("%hhd %hhd", &n, &k);
  getchar_unlocked();
  unsigned char h[101], h2[101];
  for (unsigned char i = 0; i < n; i++) h[i] = getchar_unlocked() - 80;
  for (unsigned char i = 0; i < k; i++) {
    unsigned char *cur = (i & 1) ? h2 : h, *nxt = (i & 1) ? h : h2;
    for (unsigned char j = 0; j < n; j++) {
      nxt[j] = H[(cur[(j * 2) % n] * 4) + cur[((j * 2) + 1) % n]];
    }
  }
  putchar_unlocked(((k & 1) ? (*h2) : (*h)) + 80);
}
