- -- import Control.Lens 
- import Data.List 
-   
- extract (x:xs) recv = extract xs $ \n s -> if '0' <= x && x <= '9' then recv (n ++ [x]) s else recv n (s ++ [x]) 
- extract []     recv = recv [] [] 
-   
-   
- -- assemble' = mapMOf_ both putStrLn . foldl' (\a c -> a & (if isDigit c then _1 else _2) %~ cons c) ([], []) 
- -- assemble'' = mapMOf_ both putStrLn . partition isDigit . reverse 
-   
- main = assemble "x51ca2yz" 
-   
				LS0gaW1wb3J0IENvbnRyb2wuTGVucwppbXBvcnQgRGF0YS5DaGFyCmltcG9ydCBEYXRhLkxpc3QKCmV4dHJhY3QgKHg6eHMpIHJlY3YgPSBleHRyYWN0IHhzICQgXG4gcyAtPiBpZiAnMCcgPD0geCAmJiB4IDw9ICc5JyB0aGVuIHJlY3YgKG4gKysgW3hdKSBzIGVsc2UgcmVjdiBuIChzICsrIFt4XSkKZXh0cmFjdCBbXSAgICAgcmVjdiA9IHJlY3YgW10gW10KCmFzc2VtYmxlIHMgPSBleHRyYWN0IHMgJCBcbiBzIC0+IHB1dFN0ckxuIG4gPj4gcHV0U3RyTG4gcwoKLS0gYXNzZW1ibGUnID0gbWFwTU9mXyBib3RoIHB1dFN0ckxuIC4gZm9sZGwnIChcYSBjIC0+IGEgJiAoaWYgaXNEaWdpdCBjIHRoZW4gXzEgZWxzZSBfMikgJX4gY29ucyBjKSAoW10sIFtdKQotLSBhc3NlbWJsZScnID0gbWFwTU9mXyBib3RoIHB1dFN0ckxuIC4gcGFydGl0aW9uIGlzRGlnaXQgLiByZXZlcnNlCgptYWluIDo6IElPICgpCm1haW4gPSBhc3NlbWJsZSAieDUxY2EyeXoiCg==