func_code_string: #include <bits/stdc++.h>   using namespace std;   const int64_t INF = 1e18, MOD = 1e9 + 7;   const int64_t MAXN = 1e3;   pair<int64_t, int64_t> last = {0, 0};   pair<int64_t, int64_t> ask(int64_t i) {     if (i != -1) cout <<  +   << (i + 1) << endl;     int64_t a, b;     cin >> a >> b;     a -= last.first, b -= last.second;     last = {a + last.first, b + last.second};     return {a, b};   }   int64_t search(int64_t v) {     for (int64_t i = 1; i < MAXN; i++) {       if ((i * (i - 1)) / 2 == v) return i;     }     return -1;   }   int32_t main() {     ios_base::sync_with_stdio(false);     int64_t n;     cin >> n;     ask(-1);     vector<int64_t> ans(n);     pair<int64_t, int64_t> q1 = ask(0);     pair<int64_t, int64_t> q2 = ask(1);     pair<int64_t, int64_t> q3 = ask(2);     pair<int64_t, int64_t> q4 = ask(0);     ans[0] = search(q4.first) + 1;     if (q2.second == 0)       ans[2] = 1;     else       ans[2] = search(q3.first) + 1;     ans[1] = q4.second / ans[2];     int64_t carry = q3.second - ans[1] * (ans[0] - 1);     for (int64_t i = 3; i < n - 1; i++) {       pair<int64_t, int64_t> qur = ask(i);       if (carry == 0)         ans[i] = 1;       else         ans[i] = search(qur.first) + 1;       carry = qur.second - ans[i - 1] * ans[i - 2];     }     if (carry == 0)       ans[n - 1] = 0;     else       ans[n - 1] = carry / ans[n - 3];     ans[0]--;     for (int64_t i = 0; i < n - 1; i++) ans[i]--;     cout <<  !  ;     for (int64_t i = 0; i < n; i++) cout << ans[i] <<    ;     cout << endl;     return 0;   }   