#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <set>
#include <map>
#include <cmath>
#include <queue>
#include <iomanip>
#include <bitset>
#include <unordered_map>
#include <stack>
#include <memory.h>
#include <list>
#include <numeric>
#include <functional>
#include <complex>
#include <cassert>
#include <regex>
#include <random>
#include <sstream>

#define ll long long
#define ld long double
#define ull unsigned ll
#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define pii pair<int,int> 
#define vi vector<int>
#define vll vector<ll>
#define vpii vector<pii>
#define vvi vector<vector<int>>
#define forn(it,from,to) for(int (it)=from; (it)<to; (it)++)
ll LINF = (ll)4e18;
ll mod = 998244353;
using namespace std;
const int INF = 1000 * 1000 * 1000;
const int N = 200005;
double pi = acos(-1);
uniform_int_distribution<int> gen(0, 9999);
mt19937 rnd;
int main() {
#ifdef _DEBUG
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#else
	//freopen("sum.in", "r", stdin);
	//freopen("sum.out", "w", stdout);
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
#endif
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	cout.precision(20);
	cout.setf(ios::fixed);
	rnd.seed(time(nullptr));
	ld s30 = 30 * 30 * pi;
	ld s20 = 20 * 20 * pi;
	ld s10 = 10 * 10 * pi;
	int cnt = 0, res;
	forn(i, 0, 300) {
		int xy = gen(rnd);
		int x = xy / 100 + 1;
		int y = xy % 100 + 1;
		cout << "? " << x << ' ' << y << endl;
		cin >> res;
		cnt += res;
	}
	ld s = 10000 * (ld)cnt / 300;
	vector<pair<ld, ld>> ans = { {fabs(s30 - s), 30}, {fabs(s20 - s), 20}, {fabs(s10 - s), 10} };
	sort(all(ans));
	cout << "! " << (int)ans[0].second << endl;
	return 0;
}