#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "assert.h" using namespace std; //[n*p] * [p*m] => [n*m] template vector< vector > multmat(const vector > &A, const vector> &B, int n, int p, int m){ vector > C(n, vector(m,0)); for(int i=0; i> m; vector px(m), py(m); for(int i=0; i> px[i] >> py[i]; } cout << "? " << 0 << " " << 0 << endl; long long dx,dy; cin >> dx >> dy; cout << "? " << 1 << " " << 0 << endl; vector r(4); cin >> r[0] >> r[2]; r[0] -= dx; r[2] -= dy; cout << "? " << 0 << " " << 1 << endl; cin >> r[1] >> r[3]; r[1] -= dx; r[3] -= dy; vector> A = { {r[0],r[1],dx}, {r[2],r[3],dy}, {0,0,1} }; cout << "!" << endl; for(int i=0; i> v = { {px[i]}, {py[i]}, {1} }; auto ans = multmat(A, v, 3,3,1); cout << ans[0][0] << " " << ans[1][0] << endl; } return 0; }