k = 30
L = list(range(k))
unknown = list(range(k))
equal = []
different = []
known = []
c,d = 2**k-1,2**k-1
print('?',c,d,flush = True)
X = int(input())
for i in range(0,k):
    print('?',c-2**i,d-2**i,flush=True)
    x = int(input())
    if x == X:
        equal.append(i)
    else:
        different.append(i)
        if X == -1:
            known.append(i)
            d -= 2**i
        elif X == 1:
            known.append(i)
            c -= 2**i

        
for i in L:
    if not i in known:
        if i in equal:
            print('?',c-2**i,d,flush = True)
            x = int(input())
            if x == 1:
                known.append(i)              
            else:
                known.append(i)
                c -= 2**i
                d -= 2**i
        else:
            print('?',c,d,flush = True)
            if x == 1:
                known.append(i)
                c -= 2**i
            else:
                known.append(i)
                d -= 2**i
    
print('!',c,d,flush=True)