#include using namespace std; typedef long long ll; typedef pair pii; typedef pair pll; typedef vector vi; typedef vector vll; typedef vector vs; // マクロ #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rep2(i, a, n) for (int i = (a); i < (int)(n); i++) #define rrep(i, n) for (int i = (int)(n) - 1; i >= 0; i--) #define each(x, v) for (auto &x : v) #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define sz(x) ((int)(x).size()) #define pb(x) push_back(x) #define mp(x, y) make_pair(x, y) const int INF = 1e9; const ll LINF = 1e18; const int MOD = 998244353; int mySqrt(int x){ for(int i = 0; i < 10; i++){ if(x == i * i){ return i; } } return -1; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; if(n == 2){ cout << 0 << " " << 1 << endl; int special; cin >> special; cout << 1 << " " << 0 << endl; if(special == 49){ cout << "! 77" << endl; } else if(special == 64){ cout << "! 88" << endl; } else if(special == 81){ cout << "! 99" << endl; } else { cout << "! -1" << endl; } return 0; } int x[n]; cout << 0 << " " << 1 << endl; int x01; cin >> x01; cout << 1 << " " << 2 << endl; int x12; cin >> x12; cout << 0 << " " << 2 << endl; int x02; cin >> x02; x[0] = mySqrt(x01 * x02 / x12); x[1] = mySqrt(x01 * x12 / x02); x[2] = mySqrt(x02 * x12 / x01); for(int i = 3; i < n; i++){ cout << 0 << " " << i << endl; int x0i; cin >> x0i; x[i] = x0i / x[0]; } cout << "! "; for(int i = 0; i < n; i++){ cout << x[i]; } cout << endl; return 0; }