/*-----------------------*/
/*------- Faqueue -------*/
/*-----------------------*/

#include <bits/stdc++.h>
using namespace std;
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);

typedef long long ll;
#define FIN ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define forr(i, a, b) for(ll i = (a); i < (ll) (b); i++)
#define forn(i, n) forr(i, 0, n)
#define pb push_back
#define mp make_pair
#define all(c) (c).begin(),(c).end()
#define DBG(x) cerr << #x << " = " << (x) << endl
#define DBGV(v,n) forn(i,n) cout << v[i] << " "; cout << endl
#define esta(x,c) ((c).find(x) != (c).end())
#define RAYA cerr << "===============================" << endl
const ll MOD = (ll)(1e9+7); // 998244353 
const ll INF = (ll)(1e9+10); // (1e18+10)
const int MAXN = (int)(2e5+5);


int main(){
  FIN;
	
  int n; cin >> n;
  int a = 0, b = n+1;
  while(b - a > 2) {
    int q1 = a + (b-a)/3;
    int q2 = b - (b-a)/3;
    int val1, val2;
    cout << "? " << q1 << endl;
    cout << "? " << q2 << endl;
    cin >> val1 >> val2;
    if(val1 > val2) a = q1;
    else b = q2;
  }
  vector <int> aux;
  for(int i = a; i <= b; i++) {
    if(i == 0) {aux.pb(INF); continue;}
    if(i == n+1) {aux.pb(INF); continue;};
    cout << "? " << i << endl;
    int x; cin >> x;
    aux.pb(x);
  }
  forr(i,1,aux.size()-1) {
    if(aux[i] < aux[i-1] && aux[i] < aux[i+1]) {
      cout << "! " << a+i << endl;
      return 0;
    }
  }
  
  
  return 0;
}
