#include using namespace std; int ask(int a, int b) { cout << "? " << a << " " << b << endl; int p; cin >> p; if (p == -1) exit(0); return p; } void ans(string s) { cout << "! " << s << endl; exit(0); } int main() { int N; if (!(cin >> N)) return 0; if (N == 2) { int p = ask(0, 1); string s = ""; for (int x = 1; x <= 9; ++x) { for (int y = 0; y <= 9; ++y) { if (x * y == p) { if (s != "") ans("-1"); s = to_string(x) + to_string(y); } } } ans(s != "" ? s : "-1"); } vector P(N - 1); for (int i = 0; i < N - 1; ++i) P[i] = ask(i, N - 1); vector S; for (int d = 1; d <= 9; ++d) { bool ok = true; for (int p : P) if (p % d || p / d > 9) ok = false; if (ok) S.push_back(d); } if (S.empty()) ans("-1"); auto out = [&](int d) { string s = to_string(d); for (int i = N - 2; i >= 0; --i) s += to_string(P[i] / d); ans(s); }; if (S.size() == 1) out(S[0]); int u = -1, v = -1; for (int i = 0; i < N - 1; ++i) { if (P[i] > 0) { if (u == -1) u = i; else if (v == -1) v = i; } } if (u != -1 && v != -1) { int q = ask(u, v); for (int d : S) if ((P[u] / d) * (P[v] / d) == q) out(d); } ans("-1"); }