: h s/.*:\(.*\):.*/\1/ p x s/:/!:/ :a s/$/@9876543210!/ s/\([0-9]\)!\(.*\)@.*\1\(.\).*/\3\2/ s/!/!9/ /!/ba #/5$/{ #} #p #/5$/!{ s/[^:]*$/&:&/ /:1$/!{ :c s/$/!/ :b s/$/@9876543210!/ s/\([0-9]\)!\(.*\)@.*\1\(.\).*/\3\2/ s/!/!9/ /!/bb H x s/\n.*:\(.*\):.*:.*/+0\1/ # first plus s/$/@ 9876543210/ :d s/ .*/&&/ #p s/\(.\?\)\(+.*\)\(.\)\(@.*\)\( .*\1\(.*\) \(.*\3\(.*\)\)\)/\2\4\6\8\7\7\5/ s/\(.*@\).\{19\}\(.\).\{0,9\}\(.\?\).* .* /\2%\1\3 / /+@/!bd s/^0\|%\|+.*//g #p x #p /:0\?1$/!bc } H x s/\(.*\)..\n.*:\(.*\):.*:.*/\1+0\2/ # plus again s/$/@ 9876543210/ :f s/ .*/&&/ #p s/\(.\?\)\(+.*\)\(.\)\(@.*\)\( .*\1\(.*\) \(.*\3\(.*\)\)\)/\2\4\6\8\7\7\5/ s/\(.*@\).\{19\}\(.\).\{0,9\}\(.\?\).* .* /\2%\1\3 / #p /+@/!bf s/^0\|%\|+.*//g #p s/..\n.*:\(.*\):.*:.*/+\1/ H x s/\(.*:\).*:\(.*\):.*\n\(.*\)/\1\3:\2/ #p /^0*:/!b d