#include using namespace std; using pii = pair; using ll = long long; const int N = 2000010, MOD = 998244353, INF = 0x3f3f3f3f; int n, m, w[N]; int ask(int a, int b) { printf("? %d %d\n", a - 1, b - 1); fflush(stdout); scanf("%d", &a); return a; } void solve() { scanf("%d", &n); vector v = {0, 0}; for (int i = 2; i < n + 1; i++) v.push_back(ask(1, i)); for (int i = 2; i < n + 1; i++) if (v[i]) { for (int j = i + 1; j < n + 1; j++) if (v[j]) { int t = ask(i, j); v[1] = sqrt(v[i] * v[j] / t); break; } break; } if (!v[1]) { puts("! -1"); fflush(stdout); return; } printf("! %d", v[1]); for (int i = 2; i < n + 1; i++) printf("%d", v[i] / v[1]); puts(""); fflush(stdout); } int main() { int T = 1; // cin >> T; while (T--) solve(); return 0; }