-- 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==