def query(y) STDOUT.puts("? #{y}") STDOUT.flush gets.chomp.to_i end ok = 0 ng = 10 ** 9 + 1 100.times do y = (ok + ng) / 2 res = query(y) if res == 0 puts [0, y - 1].max break elsif res < 0 ng = y ok = [0, ok - 1].max else ok = [0, y - 1].max end end