# %% N = 100 A = 3 B = 4 m = max(A, B, 10) # print(f"A={A},B={B}") def check(flg=False, x=-1, y=-1, m=m): for aa in range(m): for bb in range(m): if flg and not (aa == x and bb == y): continue a, b = main(False, aa, bb, trg=flg) if a != aa or b != bb: print("AB", aa, bb) print("ab", a, b) print() if not flg: print("Done") def main(flg=True, a=-1, b=-1, trg=False): def f1(r, x, p, q): for i in range(1 + N): for j in range(1 + N): if (i - p) ** 2 + (j - q) ** 2 == r: s[x].add((i, j)) def f(i, p, q): if flg: r = int(input()) else: r = (a - p) ** 2 + (b - q) ** 2 f1(r, i, p, q) if flg or trg: print("?", p, q) s = [set(), set()] p, q = 0, 0 for i in range(2): f(i, p, q) p, q = 0, 1 a, b = (s[0] & s[1]).pop() if flg or trg: print("!", a, b) return a, b main() # check(False, A, B, m) # %%