#include <bits/stdc++.h>
#define F first
#define S second
 
using namespace std;
using ll = long long;
using pi = pair<int, int>;
using vi = vector<int>;
 
template<class T> bool ckmin(T& a, T b) { return b < a ? a = b, true : false; }
template<class T> bool ckmax(T& a, T b) { return a < b ? a = b, true : false; }
int query(ll x) {
    cout << "? " << x << endl;
    int r;
    cin >> r;
    return r;
}
signed main() {
    // ios::sync_with_stdio(0); cin.tie(0);
    
    ll n; cin >> n;
    ll l = 0, r = n;
    int d = 1;
    ll x = 0;
    ll mx = 0;
    while (r - l > 1) {
        ll m = (l + r) / 2;
        x += m * d;
        d *= -1;
        mx = max(mx, -x);
        if (x >= n) {
            r = m;
        } else {
            l = m;
        }
    }
    l = 0, r = n;
    x = mx + 1;
    d = 1;
    query(x);
    while (r - l > 1) {
        ll m = (l + r) / 2;
        x += m * d;
        d *= -1;
        if (query(x)) {
            r = m;
        } else {
            l = m;
        }
    }
    cout << "= " << r << endl;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |