#include <bits/stdc++.h>
using namespace std;
struct node {
  int l, r;
};
int n;
int op(int x) { return (x + (n >> 1) - 1) % n + 1; }
int main() {
  scanf("%d", &n);
  if (n >> 1 & 1) return puts("! -1"), 0;
  int l = 1, r = op(1), dl, dr, x1, x2;
  printf("? %d\n? %d\n", l, r);
  fflush(stdout);
  scanf("%d%d", &dl, &dr);
  if (dl == dr) return printf("! %d\n", l), 0;
  dl -= dr;
  dr = -dl;
  while (l ^ r) {
    int mid = l + r >> 1;
    printf("? %d\n? %d\n", mid, op(mid));
    fflush(stdout);
    scanf("%d%d", &x1, &x2);
    if (x1 == x2) return printf("! %d\n", mid), 0;
    x1 -= x2;
    x2 = -x1;
    if (x1 * dl < 0)
      r = mid;
    else
      l = mid;
  }
  return 0;
}
