#include <bits/stdc++.h>
using namespace std;
long long debugVal = 1;
const long long inf = 2e19;
#pragma GCC optimize("unroll-loops")
long long r(long long x) { return (sqrt(1 + 8 * x) + 1) / 2; }
signed main() {
  long long n;
  cin >> n;
  long long t, p;
  cin >> t >> p;
  long long a[n + 1], cur[n + 1];
  a[0] = 0;
  long long rett[n + 1], retp[n + 1];
  rett[0] = t;
  retp[0] = p;
  for (long long i = 1; i < n - 3; i++) {
    cout << "+ " << n - i << endl;
    cin >> rett[i] >> retp[i];
  }
  cout << "+ 3" << endl;
  cin >> rett[n - 3] >> retp[n - 3];
  cout << "+ 1" << endl;
  cin >> rett[n - 2] >> retp[n - 2];
  cout << "+ 2" << endl;
  cin >> rett[n - 1] >> retp[n - 1];
  cout << "+ 1" << endl;
  cin >> rett[n] >> retp[n];
  a[1] = r(rett[n] - rett[n - 1]) - 1;
  a[3] = (retp[n] - retp[n - 1]) - (retp[n - 2] - retp[n - 3]) - 1;
  a[2] = (retp[n - 2] - retp[n - 3]) / (a[3] + 1);
  a[4] = (retp[n - 1] - retp[n - 2]) / (a[3] + 1) - a[1] - 2;
  for (long long i = 5; i <= n; i++) {
    a[i] = (retp[n - i + 2] - retp[n - i + 1] - a[i - 4] * a[i - 3] -
            a[i - 3] * (a[i - 1] + 1)) /
               (a[i - 1] + 1) -
           1;
  }
  a[n]++;
  cout << "! ";
  for (long long i = 1; i <= n; i++) cout << a[i] << ' ';
  cout << endl;
}
