#include #include using namespace std; using namespace atcoder; using ll = long long; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } ll inf_ll = 9223372036854775807; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) using mint = atcoder::modint998244353; using mint1 = atcoder::modint1000000007; using Pa = std::pair; int Yes(bool x){ if(x) cout << "Yes"; else cout << "No"; cout << endl; return 0; } int main(){ ll H, W; cin >> H >> W; if(H == 1 && W == 1){ cout << "! 1 1" << endl; cout << flush; return 0; } if(H == 1){ cout << "? 1 1" << endl; cout << flush; ll d; cin >> d; rep(j, W){ if(j*j == d){ cout << "! 1 "; cout << j+1 << endl; cout << flush; break; } } return 0; } if(W == 1){ cout << "? 1 1" << endl; cout << flush; ll d; cin >> d; rep(i, H){ if(i*i == d){ cout << "! 1 "; cout << i+1 << endl; cout << flush; break; } } return 0; } ll a, b; cout << "? 1 1" << endl; cout << flush; cin >> a; cout << "? 2 1" << endl; cout << flush; cin >> b; for(ll i = 1; i <= H; i++){ for(ll j = 1; j <= W; j++){ if((i-1)*(i-1)+(j-1)*(j-1) == a){ if((i-2)*(i-2)+(j-1)*(j-1) == b){ cout << "! " << i << " " << j << endl; cout << flush; return 0; } } } } }