local function query(str) io.write(str .. "\n") io.flush() local ret = io.read("*l") return ret end local min, max = 1, 1000000001 while 1 < max - min do local mid = math.floor((min + max) / 2) local qstr = "? " .. mid local ans = query(qstr) if ans == "1" then min = mid else max = mid end end print("! " .. min)