#include using namespace std; using ll = long long; #ifdef LOCAL #include "debug.h" #else #define dbg(...) 0 #define dbgn(...) 0 #endif int q(ll x) { cout << "? " << x << endl; int response; cin >> response; if (response == -1) { exit(0); } return response; } int32_t main() { cin.tie(0)->sync_with_stdio(0); ll l = 1, r = 1000000; ll prev_x, curr_x; int resp; prev_x = 1; cout << "? " << prev_x << endl; curr_x = 1000000; resp = q(curr_x); if (resp == 1) { l = 500001; } else { r = 500000; } prev_x = curr_x; while (l < r) { ll m; if (prev_x > r) { m = l + (r - l) / 2; } else { m = l + (r - l + 1) / 2; } curr_x = 2 * m - prev_x; resp = q(curr_x); if (curr_x > prev_x) { if (resp == 1) { l = m; } else { r = m - 1; } } else { if (resp == 1) { r = m; } else { l = m + 1; } } prev_x = curr_x; } cout << "! " << l << endl; return 0; }