#include #include #include #include using namespace std; using ll = long long; #define rep(i, n) for (int i = 0; i < n; ++i) int sqrt(ll x) { for (int i = 1; i < 10; i++) if (x == i * i) return i; } int main() { ll n; cin >> n; vector res(10, n); vector non_zero; rep(i, n - 1) { cout << "? " << i << " " << n - 1 << endl; cin >> res[i]; if (res[i] != 0) non_zero.emplace_back(i); } if (non_zero.size() == 0) { cout << "! -1" << endl; return 0; } if (non_zero.size() == 1) { ll ret = res[non_zero[0]]; if (ret == 1) { cout << "! 11" << endl; } else if (ret == 25) { cout << "! 55" << endl; } else if (ret == 49) { cout << "! 77" << endl; } else if (ret == 64) { cout << "! 88" << endl; } else if (ret == 81) { cout << "! 99" << endl; } else { cout << "! -1" << endl; return 0; } } cout << "? " << non_zero[0] << " " << non_zero[1] << endl; ll res01; cin >> res01; res[n - 1] = res[non_zero[0]] * res[non_zero[1]] / res01; ll a_back = sqrt(res[n - 1]); cout << "! "; rep(i, n) { cout << res[n - 1 - i] / a_back; } cout << endl; }