#include <bits/stdc++.h>
using namespace std;
using uint = unsigned int;
using ll = long long;
using pii = pair<int, int>;
template <typename T1, typename T2>
ostream &operator<<(ostream &out, const pair<T1, T2> &item) {
  out << '(' << item.first << ", " << item.second << ')';
  return out;
}
template <typename T>
ostream &operator<<(ostream &out, const vector<T> &v) {
  for (const auto &item : v) out << item << ' ';
  return out;
}
int n;
void printSol(int x) { (cout << "! " << x << '\n').flush(); }
int query(int x) {
  (cout << "? " << x << '\n').flush();
  int ans;
  cin >> ans;
  return ans;
}
int f(int i) { return query(i) - query(1 + (i + n / 2 - 1) % n); }
int main() {
  ios_base::sync_with_stdio(false);
  int l, r, mid;
  ll fl, fr, fm;
  cin >> n;
  if ((n / 2) % 2 == 1) return printSol(-1), 0;
  l = 1;
  r = 1 + n / 2;
  fl = f(l);
  fr = f(r);
  if (fl == 0) return printSol(l), 0;
  if (fr == 0) return printSol(r), 0;
  while (l < r) {
    mid = (l + r) / 2;
    fm = f(mid);
    if (fm == 0) return printSol(mid), 0;
    if (fl * fm < 0)
      r = mid, fr = fm;
    else
      l = mid, fl = fm;
  }
  return 0;
}
