move = 10 ** 9 / 2 + 10000 border = move 100.times do puts "? #{border}" STDOUT.flush res = gets.to_i == 1 ? 1 : -1 if move == 1 and res == -1 then puts "! #{border - 1}" break end move = [move/2, 1].max border += res * move end