g=lambda k:g(k%2*k/2)|g(k%3/2*-~k/3)if k>1else k
f=lambda n,k=1:n and-~f(n-g(k),k+1)
for n in 1, 2, 3, 4, 5, 10, 20, 30, 55:
print '%2d -> %3d' % (n, f(n))
Zz1sYW1iZGEgazpnKGslMiprLzIpfGcoayUzLzIqLX5rLzMpaWYgaz4xZWxzZSBrCmY9bGFtYmRhIG4saz0xOm4gYW5kLX5mKG4tZyhrKSxrKzEpCgpmb3IgbiBpbiAxLCAyLCAzLCA0LCA1LCAxMCwgMjAsIDMwLCA1NToKCXByaW50ICclMmQgLT4gJTNkJyAlIChuLCBmKG4pKQ==