def I():return int(input()) def MAP():return map(int,input().split()) def MAPs():return map(str,input().split()) def LI(): return list(map(int,input().split())) def TPL(): return tuple(map(int,input().split())) def S():return input() from collections import defaultdict,Counter,deque from copy import deepcopy from heapq import heapify,heappop,heappush from bisect import bisect_left,bisect_right from itertools import accumulate,product,permutations,combinations,combinations_with_replacement from math import gcd,ceil,floor,factorial,sqrt,pi,sin,cos,tan,radians,exp import time import random inf=float('inf');mod=998244353;Mod=10**9+7 dydx=[(1,0),(0,1),(-1,0),(0,-1)] ok=-1;ng=10**9+1 while ng-ok>1: mid=(ok+ng)//2 print('?',mid) if I()==1: ok=mid else: ng=mid print('!',ok)