#include <bits/stdc++.h>
using namespace std;
#define int long long int
#define double long double
#define print(a) for(auto x : a) cout << x << " "; cout << endl
const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
inline int power(int a, int b, int mod=M) {
int x = 1;
a %= mod;
while (b) {
if (b & 1) x = (x * a) % mod;
a = (a * a) % mod;
b >>= 1;
}
return x;
}
//_ ***************************** START Below *******************************
//* Change this to false => before submitting to cf
bool testing = true;
int n = 10;
vector<int> toGuess = {2, 4, 6, 7, 9, 10};
bool interactor(int query){
auto it = lower_bound(begin(toGuess), end(toGuess), query);
if(it != toGuess.end() && *it == query ) return true;
return false;
}
bool askQuery(int x){
cout << "? " << x << endl;
//* Custom interactor for testing ourself
if(testing){
cout << interactor(x) << endl;
return interactor(x);
}
//* Codeforces Judge interacts
int yesNo;
cin >> yesNo;
return yesNo;
}
int consistency(){
//* seed random with random_device
// random_device rd;
// mt19937 gen(rd());
//* seed random with system clock
mt19937 gen(chrono::steady_clock::now().time_since_epoch().count());
uniform_int_distribution<> distrib(1, n);
for(int i=1; i<=100; i++){
int randIndx = distrib(gen);
if(askQuery(randIndx) == true) return randIndx;
}
}
void solve() {
//* String buffer issue in interactive
// cout << "! " << consistency() << endl;
int ans = consistency();
cout << "! " << ans << endl;
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
solve();
return 0;
}