l, r = 0, 1000_000_000 + 10 border = (l + r) / 2 puts "? #{border}" STDOUT.flush res = 0 40.times do # while (res = gets.not_nil!.to_i) != 0 res = gets.not_nil!.to_i if res == 1 l = border - 1 r -= 1 else r = border - 1 l -= 1 end border = (l + r + 1) / 2 puts "? #{border}" STDOUT.flush end while (res = gets.not_nil!.to_i) != 0 puts "? #{border - 20}" STDOUT.flush end puts "! #{border - 21}"