#include using namespace std; using ll = long long; const ll INF = 1ll << 60; #define REP(i, n) for(ll i =0; i < ll(n); i++) template using V = vector; template bool chmax(A& a, B b) { return a bool chmin(A& a, B b) { return b> n; V ten(n); ten[0] = 1; REP(i, n-1) ten[i+1] = ten[i] * 10; V prod(n-1); V non_zero; REP(i, n-1) { cout << "? " << i << ' ' << n-1 << endl; cin >> prod[i]; if(prod[i]) non_zero.push_back(i); } if(non_zero.size() == 0) { cout << "! -1" << endl; return; } if(non_zero.size() == 1) { if(prod[non_zero[0]] == 1) { cout << "! " << ten[n-1] + ten[non_zero[0]] << endl; } else { cout << "! -1" << endl; } return; } cout << "? " << non_zero[0] << ' ' << non_zero[1] << endl; int p; cin >> p; int d02 = prod[non_zero[0]] * prod[non_zero[1]] / p; int d0 = sqrt(d02); assert(d0*d0 == d02); int ans = ten[n-1] * d0; REP(i, n-1) ans += ten[i] * (prod[i] / d0); cout << "! " << ans << endl; } int main() { // cin.tie(0)->sync_with_stdio(0); testcase(); }