#include<cstdio>
#include<cstring>
//判断是否是回文数 利用函数写,不然很麻烦 

bool Judge(int a[],int num){
    //判断是不是回文数
    for(int i=0;i<=num/2;i++){
        if(a[i] != a[num-i-1]){
            return false;
        }
    }

    return true;
} 

int main(){

    int y,b;

    scanf("%d %d",&y,&b);

    int a[40],num=0;        //注意存储在a[]中数,是高位在高地址的; num就是其位数。 

    do{                        //取余 除基
        a[num++] = y%b;
        y = y/b; 
    }while(y!=0);

    bool flag = Judge(a,num);

    if(flag)    printf("Yes\n");
    else         printf("No\n");

    for(int i=num-1;i>=0;i--){
        printf("%d",a[i]);
        if(i!=0)    printf(" ");
    }





    return 0;
}