rmin = 1 rmax = 10 ** 9 while rmin <= rmax do mid = (rmin + rmax) / 2 print "? ", mid, "\n" STDOUT.flush if gets.to_i == 1 rmin = mid + 1 else rmax = mid - 1 end end print "! ", rmin - 1, "\n" STDOUT.flush