t=10 o=100 g=[4,20] main=mapM(putStrLn.unwords.map show.f)[1..o] f x|x<17=[x]|x<70=div x t*t:[y|y>0]|x<77=[60,y+t]|x<80=[60,t,y]|x<97=g++[z|z>0]|x<o=g++[t,y]|6<9=[o]where y=x`mod`t;z=x`mod`20
Note that non-ascii characters in the above source code will be escaped (such as \x9f).