#include using namespace std; typedef long long ll; typedef long double ld; typedef pair ii; typedef vector vi; typedef vector vvi; typedef vector vii; #define x first #define y second #define pb push_back #define eb emplace_back #define all(v) (v).begin(), (v).end() const ll MOD = 1000000007; const ll D = 15; void run() { srand(time(0)); ll v = 0; unordered_map M; bool duplicates = true; while (duplicates) { duplicates = false; M = unordered_map(); v = rand()%MOD; for (ll bm = 0; bm < (1<> n; vi res(n, 0); for (ll todo = n; todo > 0; todo -= D) { vi A(n+1); for (ll i = 0; i <= n; i++) { if (i <= todo-D || i == 0) { A[i] = 0; } else if (i <= todo) { A[i] = v; } else { A[i] = res[i-1]; } } cout << "?"; for (ll i = 0; i <= n; i++) { cout << " " << A[i]; } cout << endl; ll r; cin >> r; ll bm = M[r]; for (ll bmc = bm, i = 0; i < D; i++, bmc /= 2) { if (todo-D+i >= 0) res[todo-D+i] = bmc%2; } } cout << "! "; for (ll i = 0; i < n; i++) { if (res[i] == 0) { cout << "+"; } else { cout << "x"; } } cout << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(0); run(); return 0; }