#include #include #include #include namespace mp = boost::multiprecision; using Bint = mp::cpp_int; using namespace std; using namespace atcoder; #define rep(i, n) for(int i=0;i<(n);++i) #define rep1(i, n) for(int i=1;i<=(n);i++) #define ll long long using mint = modint998244353; using P = pair; using lb = long double; using T = tuple; #ifdef LOCAL # include # define dbg(...) debug_print::multi_print(#__VA_ARGS__, __VA_ARGS__) #else # define dbg(...) (static_cast(0)) #endif int ask(int i, int j) { cout << "? " << i << " " << j << endl; int d; cin >> d; return d; } int main() { int h, w; cin >> h >> w; int d1 = ask(1,w); int d2 = ask(2,w); int x = (d1-d2+3)/2; int y = sqrt(d1-(x-1)*(x-1))+w; if(y>=w) y -= 2*sqrt(d1-(x-1)*(x-1)); cout << "! " << x << " " << y << endl; return 0; }