#include <bits/stdc++.h>
int N;
int dp[100001];
int query(int x) {
  if (dp[x] != -1) return dp[x];
  std::cout << "? " << x << "\n";
  int y;
  std::cin >> y;
  return dp[x] = y;
}
int calc(int x) {
  int res = query(x) - query((x - 1 + N / 2) % N + 1);
  return res;
}
bool same_sign(int x, int y) {
  bool res = !((x > 0) ^ (y > 0));
  return res;
}
int main() {
  std::cin >> N;
  for (int i = 1; i <= N; ++i) dp[i] = -1;
  if (N % 4 != 0) {
    std::cout << "! -1\n";
    return 0;
  }
  int x = 1;
  int di = calc(1);
  if (di == 0) {
    std::cout << "! 1\n";
    return 0;
  }
  for (int jump = N / 2; jump >= 1; jump >>= 1) {
    while (true) {
      int dx = calc(x + jump);
      if (dx == 0) {
        std::cout << "! " << x + jump << "\n";
        return 0;
      } else if (!same_sign(di, dx))
        break;
      x += jump;
    }
  }
  std::cout << "! -1\n";
  return 0;
}
