#include <bits/stdc++.h>
using namespace std;
int n, tmpI, tmpII, tmpIII, l, r;
bool flag;
int read() {
  int tot = 0, fh = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') fh = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    tot = tot * 10 + c - '0';
    c = getchar();
  }
  return tot * fh;
}
void getstr(char *a) {
  char ch = getchar();
  int len = 0;
  while (ch < 'a' || ch > 'z') ch = getchar();
  while (ch >= 'a' && ch <= 'z') {
    a[++len] = ch;
    ch = getchar();
  }
}
int ex(int x) {
  cout << "? " << x << endl;
  int tmp = read();
  return tmp;
}
int main() {
  n = read();
  if (n % 4 == 2) {
    cout << "! -1" << endl;
    return 0;
  }
  tmpI = ex(1);
  tmpII = ex(n / 2 + 1);
  if (tmpI == tmpII) {
    cout << "! 1" << endl;
    return 0;
  }
  tmpIII = ex(n / 2);
  tmpII = ex(n);
  if (tmpIII == tmpII) {
    cout << "! " << n / 2 << endl;
    return 0;
  }
  if (tmpI < tmpIII)
    flag = true;
  else
    flag = false;
  l = 1;
  r = n / 2;
  while (true) {
    int mid = (l + r) / 2;
    tmpI = ex(mid);
    tmpII = ex(mid + n / 2);
    if (tmpI == tmpII) {
      cout << "! " << mid << endl;
      return 0;
    }
    if (flag) {
      if (tmpI > tmpII)
        r = mid - 1;
      else
        l = mid + 1;
    } else {
      if (tmpI > tmpII)
        l = mid + 1;
      else
        r = mid - 1;
    }
  }
  return 0;
}
