#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
const int MAXSIZE = 1000000000;
unsigned char m[MAXSIZE+1];
int count(int x, int level = 0, int curmin = MAXSIZE)
{
if (level > curmin) return -1;
if (x == 1) return 0;
if (m[x])
{
return m[x];
}
int res = MAXSIZE;
for(int i = sqrt(x)+0.1; i >= 1; --i)
{
if (x%i) continue;
int k = count(i+x/i-2, level+1, res);
if (k < 0) continue;
if (k < res) { res = k; }
}
return m[x] = res+1;
};
int main(int argc, const char * argv[])
{
int n = (argc > 1) ? atoi(argv[1]) : MAXSIZE;
if (n > MAXSIZE) n = MAXSIZE;
cout << n << ": " << count(n) << endl;
int cur = m[n];
while (n > 1)
{
for(int i = 1; i*i <= n; ++i)
{
if (n%i) continue;
if (m[i+n/i-2] == cur-1)
{
n = i+n/i-2;
--cur;
cout << i << " ";
break;
}
}
}
cout << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBNQVhTSVpFID0gMTAwMDAwMDAwMDsKCnVuc2lnbmVkIGNoYXIgbVtNQVhTSVpFKzFdOwoKaW50IGNvdW50KGludCB4LCBpbnQgbGV2ZWwgPSAwLCBpbnQgY3VybWluID0gTUFYU0laRSkKewogICAgaWYgKGxldmVsID4gY3VybWluKSByZXR1cm4gLTE7CiAgICBpZiAoeCA9PSAxKSByZXR1cm4gMDsKICAgIGlmIChtW3hdKQogICAgewogICAgICAgIHJldHVybiBtW3hdOwogICAgfQogICAgaW50IHJlcyA9IE1BWFNJWkU7CiAgICBmb3IoaW50IGkgPSBzcXJ0KHgpKzAuMTsgaSA+PSAxOyAtLWkpCiAgICB7CiAgICAgICAgaWYgKHglaSkgY29udGludWU7CiAgICAgICAgaW50IGsgPSBjb3VudChpK3gvaS0yLCBsZXZlbCsxLCByZXMpOwogICAgICAgIGlmIChrIDwgMCkgY29udGludWU7CiAgICAgICAgaWYgKGsgPCByZXMpIHsgcmVzID0gazsgfQogICAgfQogICAgcmV0dXJuIG1beF0gPSByZXMrMTsKfTsKCmludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQp7CiAgICBpbnQgbiA9IChhcmdjID4gMSkgPyBhdG9pKGFyZ3ZbMV0pIDogTUFYU0laRTsKICAgIGlmIChuID4gTUFYU0laRSkgbiA9IE1BWFNJWkU7CiAgICBjb3V0IDw8IG4gPDwgIjogICIgPDwgY291bnQobikgPDwgZW5kbDsKCiAgICBpbnQgY3VyID0gbVtuXTsKICAgIHdoaWxlIChuID4gMSkKICAgIHsKICAgICAgICBmb3IoaW50IGkgPSAxOyBpKmkgPD0gbjsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKG4laSkgY29udGludWU7CiAgICAgICAgICAgIGlmIChtW2krbi9pLTJdID09IGN1ci0xKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuID0gaStuL2ktMjsKICAgICAgICAgICAgICAgIC0tY3VyOwogICAgICAgICAgICAgICAgY291dCA8PCBpIDw8ICIgIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBlbmRsOwp9Cgo=