#include<cstdio>
bool jud (int a[],int num){
int i;
for(i=0;i<num/2;i++)
{
if(a[i]!=a[num-1-i])
{
return false;
}
}
return true;
}
//此题运用了判断回文数方法和整数转化为D进制方法;
int main(){
int a[50],num=0,n,b,i;
scanf("%d%d",&n,&b);
do{
a[num++]=n%b;
n/=b;
}while(n);
if(jud(a,num)==true)
{
printf("Yes\n");
printf("%d",a[0]);
for(i=1;i<num;i++)
{
printf(" %d",a[i]);
}
}
else{printf("No\n");
printf("%d",a[num-1]);
for(i=num-2;i>=0;i--)
{
printf(" %d",a[i]);
}
}
return 0;
}