lower = 0 upper = 10**9 + 1 mid = 200 n_query = 0 while lower + 1 < upper: n_query += 1 print('? {}'.format(mid), flush=True) ans = int(input()) if ans == 0: print('! {}'.format(mid + n_query), flush=True) break if ans == 1: lower = mid upper -= 1 if ans == -1: upper = mid - 1 lower = max(0, lower - 1) mid = (lower + upper) // 2 else: print('! {}'.format(lower + n_query), flush=True)