úÎd þ     NoneIOT.data type for Google Code Jam Solution Program0It has to be a Monad (e.g. to implement cBlock)..Next action has to be able to depend on state.consumes and returns one lineconsumes and returns n lines,consumes, transforms and returns next block:3a block consists of first line: n, then (n-m) linesproduce main from pure function+produce main from with transformed IO monad produce main from Monad5reads testInput or the file given on the command line2writes to standard out and to the given file with '.out' appended  H !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU   V      !"!#$%&'()*+,-./01!23435363738393:3;3;3<=>=>=?@A@B@C@DEFEGHIJKLMNOPQRSTUVWXYZ[\*GoogleCodeJam-0.0.3-EUVttzIYZVx3UXnqyWTU9gGCJRunnerfromGCJcLinecLinescBlockmainIdmainIOmainM $fFunctorGCJ$fApplicativeGCJ $fMonadGCJ $fMonadIOGCJ$fMonadTransGCJbase Control.MonadguardGHC.BasejoinMonad>>=>>returnfailFunctorfmap<$ Applicativepure<*>*><*Data.TraversablemapMsequencemfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMforMControl.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListData.Functor.ConstConstgetConst Data.Foldablemsum sequence_forM_mapM_ Data.Functorvoid<$>apliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA2liftA<**> Alternativeempty<|>somemany MonadPlusmzeromplus