o@[_,s,v,e,q]=["fif","six","seven","eigh","nine"];f="four";m n z t="zero":n++"ten":"eleven":"twelve":z(++"teen")(t:f:o)++[b++"ty"++a|b<-"twen":t:"for":o,a<-"":z(' ':)n];main=mapM putStrLn$m["one","two","three",f,"five",s,v,e++"t",q]map"thir"++["one hundred"]