#include using namespace std; int ask(int a, int b, int c1, int c2, int idx) { int r0, r1; if (idx == 0) { cout << "? " << c1 << " " << a << " " << b << endl; cin >> r0; cout << "? " << c2 << " " << a << " " << b << endl; cin >> r1; } if (idx == 1) { cout << "? " << a << " " << c1 << " " << b << endl; cin >> r0; cout << "? " << a << " " << c2 << " " << b << endl; cin >> r1; } if (idx == 2) { cout << "? " << a << " " << b << " " << c1 << endl; cin >> r0; cout << "? " << a << " " << b << " " << c2 << endl; cin >> r1; } return (r0 <= r1); } int main() { int x = 0, y = 0, z = 0; for (int i = 0; i < 3; i++) { int l = -100, r = 100; while (r - l >= 3) { int l1 = (l * 2 + r) / 3, r1 = (l + r * 2) / 3; int ret; if (i == 0) ret = ask(y, z, l1, r1, i); if (i == 1) ret = ask(x, z, l1, r1, i); if (i == 2) ret = ask(x, y, l1, r1, i); if (ret) r = r1; else l = l1; } while (l < r) { int ret; if (i == 0) ret = ask(y, z, l, r, i); if (i == 1) ret = ask(x, z, l, r, i); if (i == 2) ret = ask(x, y, l, r, i); if (ret) r--; else l++; } if (i == 0) x = l; if (i == 1) y = l; if (i == 2) z = l; } cout << "! " << x << " " << y << " " << z << endl; }