#include <bits/stdc++.h>
using namespace std;
long long n;
unordered_map<long long, long long> g;
void input() { cin >> n; }
long long get(long long mid) {
  long long tmp[2];
  printf("? %lld\n", mid + 1);
  fflush(stdout);
  scanf("%lld", &tmp[0]);
  printf("? %lld\n", (mid + n / 2) % n + 1);
  fflush(stdout);
  scanf("%lld", &tmp[1]);
  if (tmp[0] - tmp[1] > 0) return 1;
  if (tmp[0] - tmp[1] < 0) return -1;
  return 0;
}
void work() {
  long long l = 0, r = n / 2;
  long long l_, r_;
  l_ = get(l);
  r_ = -l_;
  if (l_ == 0) {
    printf("! %lld\n", l + 1);
    fflush(stdout);
    return;
  }
  while (1) {
    long long mid = (l + r) / 2;
    mid %= n;
    long long mid_ = get(mid);
    if (mid_ == 0) {
      printf("! %lld\n", mid + 1);
      fflush(stdout);
      return;
    }
    if (l_ * mid_ >= 1) {
      l = mid;
      l_ = mid_;
    } else {
      r = mid;
      r_ = mid_;
    }
    if (fabs(l - r) == 1) {
      printf("! -1\n");
      fflush(stdout);
      return;
    }
    if (l > r) {
      swap(l, r);
      swap(l_, r_);
    }
  }
}
int main() {
  input();
  work();
  return 0;
}
