import System.IO import Data.List main = main' 1 (10^9) main' lo hi | succ lo == hi = putStrLn ("! " ++ show lo) | otherwise = do let md = div (lo + hi) 2 putStrLn ("? " ++ show md) hFlush stdout ack <- readLn if ack == 0 then main' lo md else main' md hi