-- yukicoder My Practice -- author: Leonardone @ NEETSDKASU import Control.Applicative import System.IO import Data.List import Data.Char main = g ['0' | _ <- [1..10]] [] 10 f s = putStrLn s >> hFlush stdout >> read . head . words <$> getLine g (x:xs) ys b = do r <- f $ flip (++) (x:xs) $ reverse ys case r of 10 -> return () r | r > b -> g xs (x:ys) 10 r | r < b && b < 10 -> g xs (dec:ys) 10 _ -> g (inc:xs) ys r where calc o = chr . flip o 1 . ord dec = calc (-) x inc = calc (+) x