import qualified Data.List as List import qualified Data.Map as Map import Data.Char import Data.Array import Data.Maybe import Control.Monad import Control.Applicative import Text.Printf import System.IO readInt :: String -> Int readInt = read printFlush s = do putStrLn s hFlush stdout grundy m (n, k) | m >= n = 0 | otherwise = (n - 1 - m) `mod` (k + 1) turn m (n, k) = do when (m < n) $ do let g = grundy m (n, k) printFlush $ show (m + (if g == 0 then 1 else g)) -- g == 0 なら時間切れを狙う response (n, k) response (n, k) = do m <- fmap readInt getLine turn m (n, k) main = do [n, k] <- fmap (map readInt . words) getLine if grundy 0 (n, k) == 0 then do printFlush "0" response (n, k) else turn 0 (n, k)