#include <iostream>
#include <math.h>
int main() {
int number,divider, mySum, displayed = 0;
std::cin>>number>>divider;
mySum = number;
do {
int currentCut = 0;
while(pow(divider, currentCut) < mySum) {
currentCut++;
}
if(currentCut != 0)
currentCut--;
if(displayed != 0)
std::cout<<" + ";
else
displayed = 1;
std::cout<<divider<<" ^ "<<currentCut;
mySum-= pow(divider, currentCut);
} while(mySum != 0);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgoKaW50IG1haW4oKSB7CiAgICAgaW50IG51bWJlcixkaXZpZGVyLCBteVN1bSwgZGlzcGxheWVkID0gMDsKICAgICBzdGQ6OmNpbj4+bnVtYmVyPj5kaXZpZGVyOwogICAgIAogICAgIG15U3VtID0gbnVtYmVyOwoKICAgICBkbyB7CiAgICAgICBpbnQgY3VycmVudEN1dCA9IDA7CgogICAgICAgd2hpbGUocG93KGRpdmlkZXIsIGN1cnJlbnRDdXQpIDwgbXlTdW0pIHsKICAgICAgICAgIGN1cnJlbnRDdXQrKzsKICAgICAgIH0KICAgICAgIAogICAgICAgaWYoY3VycmVudEN1dCAhPSAwKQogICAgICAgICBjdXJyZW50Q3V0LS07CgogICAgICAgaWYoZGlzcGxheWVkICE9IDApCiAgICAgICAgICBzdGQ6OmNvdXQ8PCIgKyAiOwogICAgICAgZWxzZQogICAgICAgCSAgZGlzcGxheWVkID0gMTsKCiAgICAgICBzdGQ6OmNvdXQ8PGRpdmlkZXI8PCIgXiAiPDxjdXJyZW50Q3V0OwogICAgIAogICAgICAgbXlTdW0tPSBwb3coZGl2aWRlciwgY3VycmVudEN1dCk7CiAgICAgfSB3aGlsZShteVN1bSAhPSAwKTsKCiAgICAgcmV0dXJuIDA7Cn0=