#include #include using namespace std; using ll = long long; #define rep(i, s, t) for (ll i = s; i < (ll)(t); i++) template bool chmin(T &x, T y) { return x > y ? (x = y, true) : false; } template bool chmax(T &x, T y) { return x < y ? (x = y, true) : false; } struct io_setup { io_setup() { ios::sync_with_stdio(false); std::cin.tie(nullptr); cout << fixed << setprecision(15); } } io_setup; int main(){ int h,w; cin>>h>>w; if(h==1&&w==1){ cout<<"! 1 1\n"; return 0; } if(h==1||w==1){ cout<<"? 1 1"<>dd; rep(lp,1,max(h,w)+1){ if(lp*lp==dd){ if(h==1){ cout<<"! 1 "<>a; cout<<"? 1 "<>b; tuple tt={a,b}; rep(lh,1,h+1) rep(lw,1,w+1){ int sa=abs(1-lh)*abs(1-lh)+abs(1-lw)*abs(1-lw); int sb=abs(1-lh)*abs(1-lh)+abs(w-lw)*abs(w-lw); tuple st={sa,sb}; if(st==tt){ cout<<"! "<