s=->(x){A=[];def k(x)A<<x
y=Prime.prime_division x;n=0..y.size-1
n.each{|i|n.to_a.combination(i+1).each{|c|c.each{|z|v=y.dup
v[z][1]>1?v[z]=[v[z].join.to_i,1]:next
k v.inject(1){|s,b|s*b[0]**b[1]}}}}end;k x;A.uniq.sort}
#usage
#load from the standard library
require"prime"
#call function and print result
$<.read.split(' ').each do |num|
puts "#{num} => #{s.call(num.to_i).join(' ')}"
end
cz0tPih4KXtBPVtdO2RlZiBrKHgpQTw8eAp5PVByaW1lLnByaW1lX2RpdmlzaW9uIHg7bj0wLi55LnNpemUtMQpuLmVhY2h7fGl8bi50b19hLmNvbWJpbmF0aW9uKGkrMSkuZWFjaHt8Y3xjLmVhY2h7fHp8dj15LmR1cAp2W3pdWzFdPjE/dlt6XT1bdlt6XS5qb2luLnRvX2ksMV06bmV4dAprIHYuaW5qZWN0KDEpe3xzLGJ8cypiWzBdKipiWzFdfX19fWVuZDtrIHg7QS51bmlxLnNvcnR9CgoKI3VzYWdlCgojbG9hZCBmcm9tIHRoZSBzdGFuZGFyZCBsaWJyYXJ5CnJlcXVpcmUicHJpbWUiCgojY2FsbCBmdW5jdGlvbiBhbmQgcHJpbnQgcmVzdWx0CiQ8LnJlYWQuc3BsaXQoJyAnKS5lYWNoIGRvIHxudW18CiAgcHV0cyAiI3tudW19ID0+ICN7cy5jYWxsKG51bS50b19pKS5qb2luKCcgJyl9IgplbmQg