#!/usr/bin/env python3
import functools


@functools.lru_cache(None)
def query(x, y): return int(input(f"? {x} {y}\n"))


n = int(input())
d = (x := (y := n // 2 + 1)) - 2
i = 0
while True:
    ans, xx, yy = max((query(xx, yy), xx, yy) for xx, yy in ((x, y), (x - 1, y), (x + 1, y), (x, y - 1), (x, y + 1))
                      if 1 <= xx <= n and 1 <= yy <= n)
    if xx == x and yy == y: print(f"! {ans}"), exit()
    x = max(1, min(n, xx + (-d if xx < x else 0 if xx == x else d)))
    y = max(1, min(n, yy + (-d if yy < y else 0 if yy == y else d)))
    d = max(0, n // 2 - int((i * n / 2) ** 0.5))
    i += 1
