from collections import * from itertools import * from functools import cache, partial from pprint import pprint import sys from typing import Any, Final try: from icecream import ic except ImportError: # Graceful fallback if IceCream isn't installed. ic = lambda *a: None if not a else (a[0] if len(a) == 1 else a) # noqa debug = partial(print, file=sys.stderr) dpprint = partial(pprint, stream=sys.stderr) sys.setrecursionlimit(10**6) MOD = 998244353 H, W = map(int, input().split()) p = 3 if H == 1 and W == 1: print("!", 1, 1) exit() if H != 1 and W != 1: # 3回クエリを投げたら (y, x) がわかる queries = ((1, 1), (1, W), (H, 1)) elif H == 1 and W == 1: # クエリを投げるまでもなく答えは (1, 1) print("!", 1, 1) exit() else: # 1回クエリを投げたら (y, x) がわかる print("?", 1, 1) ic("?", 1, 1) d = int(input()) for i in range(max(H, W) + 1): if i**2 == d: if H == 1: print("!", 1, i + 1) ic("!", 1, i + 1) else: # W == 1 print("!", i + 1, 1) ic("!", i + 1, 1) exit() D = [] for i, j in queries: print("?", i, j) ic("?", i, j) d = int(input()) D.append(d) ic(D) for y in range(1, H + 1): for x in range(1, W + 1): E = [(i - y) ** 2 + (j - x) ** 2 for i, j in queries] # ic(y, x, E) if E == D: print("!", y, x) ic("!", y, x) exit()