#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int query(const vector& v) { cout << '?'; for(int i=0; i<3; ++i) cout << ' ' << v[i]; cout << endl; int d; cin >> d; return d; } bool compare(int i, int a, int b) { vector v1(3), v2(3); v1[i] = a; v2[i] = b; int d1 = query(v1); int d2 = query(v2); return d1 < d2; } int main() { vector ans(3); for(int i=0; i<3; ++i){ int left = -150; int right = 150; while(right - left > 2){ int mid1 = (left * 2 + right) / 3; int mid2 = (left + right * 2) / 3; if(compare(i, mid1, mid2)) right = mid2; else left = mid1; } ans[i] = left; for(int j=left+1; j<=right; ++j){ if(compare(i, j, ans[i])) ans[i] = j; } } cout << '!'; for(int i=0; i<3; ++i) cout << ' ' << ans[i]; cout << endl; return 0; }