I = [min(1 << i, 10 ** 6) for i in range(21)] for _ in range(int(input())): print('? 1 0') r0 = int(input()) print('? 1 1') r1 = int(input()) k = r1 - r0 def f(x): print(f'? 1 {x}') res = int(input()) return res - r0 - k * x if not f(I[-1]): # m | n assert k > 0 if k == 1: # m = n print('? 2 0') r = int(input()) # 2r or 2r+1 print('? 2 1') t = int(input()) n = 2 * r if r == t else 2 * r + 1 print('!', n) else: sm = k * (k - 1) // 2 assert sm > 0 and r0 % sm == 0 m = r0 // sm n = m * k print('!', n) continue l = 0 r = 20 memo = [-1] * 21 while r - l > 1: c = (l + r) // 2 memo[c] = f(I[c]) if memo[c]: r = c else: l = c unit = k * (k + 1) // 2 d = I[r] - memo[r] sm = r0 + k * unit assert sm % unit == 0 m = sm // unit n = m * (k + 1) - d print('!', n) if int(input()) == -1: break