#include #include #include int N; int q(int a, int b) { if (a > b) std::swap(a, b); int p; std::cout << "? " << N - a - 1 << ' ' << N - b - 1 << std::endl; std::cin >> p; return p; } int main() { std::cin >> N; std::vector d(N); if (N == 2) { int p = q(0, 1); int r = sqrt(p); std::cout << "! "; if (r * r == p && (r == 1 || r == 5 || r == 7 || r == 8 || r == 9)) { std::cout << r << r << std::endl; } else { std::cout << -1 << std::endl; } } else { int i = 0, i2 = -1, i3 = -1, p1, p2, p3; while(++i < N) { p3 = q(0, i); if (p3 != 0) { i2 = i; break; } d[i] = 0; } while(++i < N) { p2 = q(0, i); if (p2 != 0) { i3 = i; break; } d[i] = 0; } if (i3 == -1) { std::cout << "! "; if (i2 == -1) { std::cout << -1; } else { int r = sqrt(p3); if (r * r == p3 && (r == 1 || r == 5 || r == 7 || r == 8 || r == 9)) { d[0] = d[i2] = r; for (i = 0; i < N; ++i) { std::cout << d[i]; } } else { std::cout << -1; } } std::cout << std::endl; return 0; } p1 = q(i2, i3); d[0] = std::sqrt(p2 * p3 / p1); d[i2] = std::sqrt(p3 * p1 / p2); d[i3] = std::sqrt(p1 * p2 / p3); while(++i < N) { d[i] = q(0, i) / d[0]; } std::cout << "! "; for (i = 0; i < N; ++i) { std::cout << d[i]; } std::cout << std::endl; } }