#!/usr/bin/python3

import sys

n = int(input())
xl = 1
xh = n
yl = 1
yh = n

while xh - xl > 2:
    xm = (xl + xh) // 2
    highest = -1
    highest_y = -1
    for y in range(yl, yh + 1):
        print("?", xm, y)
        sys.stdout.flush()
        v = int(input())
        if v > highest:
            highest = v
            highest_y = y
    print("?", xm - 1, highest_y)
    sys.stdout.flush()
    v1 = int(input())
    print("?", xm + 1, highest_y)
    sys.stdout.flush()
    v2 = int(input())
    if v1 < highest and v2 < highest:
        print("!", highest)
        sys.exit()
    if v1 < v2:
        xl = xm
    else:
        xh = xm

    ym = (yl + yh) // 2
    highest = -1
    highest_x = -1
    for x in range(xl, xh + 1):
        print("?", x, ym)
        sys.stdout.flush()
        v = int(input())
        if v > highest:
            highest = v
            highest_x = x
    print("?", highest_x, ym - 1)
    sys.stdout.flush()
    v1 = int(input())
    print("?", highest_x, ym + 1)
    sys.stdout.flush()
    v2 = int(input())
    if v1 < highest and v2 < highest:
        print("!", highest)
        sys.exit()
    if v1 < v2:
        yl = ym
    else:
        yh = ym

highest = -1
for x in range(xl, xh+1):
    for y in range(yl, yh+1):
        print("?", x, y)
        sys.stdout.flush()
        highest = max(highest, int(input()))
print("!", highest)
