import sys import math import collections import bisect import itertools import decimal import copy # import numpy as np # sys.setrecursionlimit(10 ** 6) INF = 10 ** 20 MOD = 10 ** 9 + 7 # MOD = 998244353 ni = lambda: int(sys.stdin.readline().rstrip()) ns = lambda: map(int, sys.stdin.readline().rstrip().split()) na = lambda: list(map(int, sys.stdin.readline().rstrip().split())) na1 = lambda: list(map(lambda x: int(x) - 1, sys.stdin.readline().rstrip().split())) # ===CODE=== def main(): n, z = ns() zn = pow(z, n) lim = int((10 ** 6) ** (1 / n) + 1) items = {pow(i, n) for i in range(1, lim)} flg = False for i in range(1, lim): tgt = zn - pow(i, n) if tgt in items: flg = True break print("Yes" if flg else "No") if __name__ == '__main__': main()