#include using namespace std; struct cww{cww(){ios::sync_with_stdio(false);cin.tie(0);}}star; #define P(x) cout << (x) << "\n" #define p(x) cout << (x) #define all(c) (c).begin(), (c).end() #define rall(c) (c).rbegin(), (c).rend() #define vv(type, c, m, n, i) vector> c(m, vector(n, i)) #define rep(i,a,n) for(int i=(a), i##_len=(n); ii##_len; --i) #define len(x) ((int)(x).size()) #define mp make_pair #define eb emplace_back #define fi first #define se second #define chmax(a,b) if(ab)a=b typedef long long ll; typedef long double ld; typedef vector vi; typedef vector vd; typedef vector vll; typedef vector vs; typedef vector vb; typedef pair pii; int d[30]; int x[3] = {-100, 0, 100}; int y[3] = {-100, 0, 100}; int z[3] = {-100, 0, 100}; int main() { int cnt = 0; rep(i, 0, 3) rep(j, 0, 3) rep(k, 0, 3) { cout << "?" << x[i] << " " << y[j] << " " << z[k]; cin >> d[cnt++]; } cnt = 0; rep(i, 0, 3) rep(j, 0, 3) rep(k, 0, 3) { rep(x2, 0, 3) rep(y2, 0, 3) rep(z2, 0, 3) { if(hypot(hypot(double(x[x2] - i), double(y[y2] - j)), hypot(double(z[z2] - i), double(y[y2] - j))) == double(d[cnt++])) { continue; } cout << "!" << i << " " << j << " " << k; return 0; } } return 0; }