Vanya has a scales for weighing loads and weights of masses *w*<sup class="upper-index">0</sup>, *w*<sup class="upper-index">1</sup>, *w*<sup class="upper-index">2</sup>, ..., *w*<sup class="upper-index">100</sup> grams where *w* is some integer not less than 2 (exactly one weight of each nominal value). Vanya wonders whether he can weight an item with mass *m* using the given weights, if the weights can be put on both pans of the scales. Formally speaking, your task is to determine whether it is possible to place an item of mass *m* and some weights on the left pan of the scales, and some weights on the right pan of the scales so that the pans of the scales were in balance.
The first line contains two integers *w*, *m* (2 ≤ *w* ≤ 10<sup class="upper-index">9</sup>, 1 ≤ *m* ≤ 10<sup class="upper-index">9</sup>) — the number defining the masses of the weights and the mass of the item.
def solucion() :

  base,peso=map(int, input().split())
  auxiliar=peso
  SoloPongoPesoEnUnPlato="True"
  data =[]
  PesoAgregadoAPlatoDelArticulo=[]

  while (auxiliar!=0) :   # verifico si el peso del art�culo se puede equilibrar con la combinaci�n de varias masas de pesos diferentes de base w, si no se puede la variable SoloPongoPesoEnUnPlato toma valor False
    resto = auxiliar % base 
    auxiliar = int(auxiliar / base)
    data.append(resto)
    if(resto>1) : SoloPongoPesoEnUnPlato="False"

  if(SoloPongoPesoEnUnPlato=="True") : print("Yes")   

  else :
     
     potencia=0
     carry=0
     for x in data: #Por cada d�gito de la representaci�n de m en base w, se analiza los posibles valores que puede tener  
      
       if(carry==1):    #Aqu� hago la suma del carry 
            x= x+1
            carry=0

       if(x>1):    
           
           if(x==base):   #si el d�gito es mayor que 1 puede darse el caso de que sea igual a la base , este caso se da porque a�ado el carry al emepezar cada iteraci�n
                x=0
                data[potencia]=x
                PesoAgregadoAPlatoDelArticulo.append(0)
                carry=1
           else : 
               if(int(x)!=(base-1)):        # En este caso se puede sumar una masa de las que tenemos y analizar el proximo d�gito
                   return print("No")
               
               else:
                     data[potencia]=0
                     PesoAgregadoAPlatoDelArticulo.append(1)
                     carry=1
       
       else :                          #cuando x es 0 o 1 no hago nada ,modifico los arrays Data y PesoAgregadoAPlatoDelArticulo pq los voy a utilizar luego para ver si puse doble algun peso
               data[potencia]=x
               PesoAgregadoAPlatoDelArticulo.append(0)
       
       potencia=potencia+1
       if(carry==1 and potencia==(len(data))):
           data.append(0)

     indice=0
     while (indice<(len(data)-1)):     # Este while es para verificar que las masas del mismo peso no hayan sido a�adidas 2 veces , lo cual ser�a incorrecto pq solo tenemos una masa para cada peso w elevado a la i con i entre 0 y 100
             if(data[indice]==PesoAgregadoAPlatoDelArticulo[indice] and data[indice]==1):
                            return print("No")
             indice=indice+1
     print("Yes")        