#include <bits/stdc++.h>
#define rep(i, a) for (int i = 0; i < (a); i++)
#define rep2(i, a, b) for (int i = (a); i < (b); i++)
#define repr(i, a) for (int i = (a) - 1; i >= 0; i--)
#define repr2(i, a, b) for (int i = (b) - 1; i >= (a); i--)
#define itall(a) a.begin(), a.end()
using namespace std;
typedef long long ll;
const ll inf = 1e9;
const ll mod = 1e9 + 7;
const double pi = acos(-1);
const double eps = 1e-8;
template<typename T> inline T sq(T a) { return a * a; }
template<typename T> inline T cb(T a) { return a * a * a; }
template<typename T> inline bool umin(T &a, const T &b) { return b < a && (a = b, true); }
template<typename T> inline bool umax(T &a, const T &b) { return a < b && (a = b, true); }

int get(int x) {
    cout << "? " << x << endl;
    int res;
    cin >> res;
    return res;
}

int main() {
    int l = 0, r = 1e9 + 1;

    int ans = 0;
    for (int i = 0;; i++) {
        int m = (l + r) / 2;
        int g = get(m);

        if (g == 0) {
            ans = m + i;
            break;
        } else if (g > 0) {
            l = m;
        } else {
            r = m;
        }
    }

    cout << ans << endl;
}