#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int n;
map<pair<int,int>,int> ma;
int query(int s, int e){
    int result;
    if(ma.find({s,e})==ma.end()){
        cout << "? " << s+1 << " " << e+1 << '\n';
        cin >> result;
        result--;
        ma.insert({{s,e},result});
    } else result = ma.find({s,e})->second;
    return result;
}
void answer(int n){
    cout << "! " << n+1;
}
int param1(int s, int e, int second){
    if(e-s==1) return e;
    int mid = (s+e)/2;
    bool result = true;
    if(second+mid<n){
        int max_val = query(second,second+mid);
        if(max_val != second) result = false;
    }
    if(result) return param1(s,mid,second);
    else return param1(mid,e,second);
}
int param2(int s, int e, int second){
    if(e-s==1) return e;
    int mid = (s+e)/2;
    bool result = true;
    if(second-mid>=0){
        int max_val = query(second-mid,second);
        if(max_val != second) result = false;
    }
    if(result) return param2(s,mid,second);
    else return param2(mid,e,second);
}
int main(void){
    // ios::sync_with_stdio(0);
    // cin.tie(0);

    cin >> n;
    int s = 0, e = n-1;
    int chk = -1;
    int val = query(s,e);
    if(s<val) chk = query(s,val);
    if(chk!=val){
        answer(val+param1(0,n,val));
    } else {
        answer(val-param2(0,n,val));
    }
    return 0;
}