#include <bits/stdc++.h> using namespace std; using ll = long long; using ull = unsigned long long; #define rep(a, b, c) for (int a = b; a < (int)c; ++a) vector<int> xm = {-1, 1, 0, 0}; vector<int> ym = {0, 0, 1, -1}; const ll MOD = 998244353; int power(int x, int y) { return x * x + y * y; } int main() { int h, w; cin >> h >> w; cout << "? 1 1" << endl; int dist; cin >> dist; assert(dist != -1); if (dist == 0) { cout << "! 1 1" << endl; return 0; } vector<int> x, y; rep(i, 1, h + 1) { rep(j, 1, w + 1) { if (power(i - 1, j - 1) == dist) { x.push_back(i); y.push_back(j); } } } cout << "? " << x[0] << " " << y[0] << endl; int dist2; cin >> dist2; assert(dist2 != -1); if (dist2 == 0) { cout << "! " << x[0] << " " << y[0] << endl; return 0; } for (int i = x.size() - 1; i >= 1; i--) { if (power(x[0] - x[i], y[0] - y[i]) != dist2) { x.erase(begin(x) + i); y.erase(begin(y) + i); } } cout << "! " << x[1] << " " << y[1] << endl; }