N,M,B=map(int,input().split()) assert(0<=N) assert(N<=10**18) assert(0<=M) assert(M<=10**18) assert(2<=B) assert(B<=10**18) X=[] while N>0: X.append(N%B) N//=B B+=X[0] ANS=X[0]*2 X[0]=0 X.append(0) print('YES') while 1: if X[1]>=70 or ANS>M: print('NO') exit() if max(X)==0: ANS+=2 break for i in range(1,len(X)): if X[i]>0: X[i]-=1 B+=1 ANS+=2 for j in range(i): X[j]=B-1 break B+=X[0] ANS+=X[0]*2 X[0]=0 if ANS<=M: print('YES') print(ANS) else: print('NO')