#include <bits/stdc++.h>
using namespace std;
int n;
int s[200], t[200];
int ds[200], dt[200];
int a[200];
int mp[20000];
int S, T;
int main() {
  std::ios::sync_with_stdio(false);
  for (int i = 2; i <= 100; i++) mp[(i * (i - 1)) / 2] = i;
  cin >> n;
  cin >> T >> S;
  s[0] = S;
  t[0] = T;
  for (int i = 1; i <= n - 1; i++) {
    cout << "+ " << i << endl;
    fflush(stdout);
    cin >> t[i] >> s[i];
    ds[i] = s[i] - s[i - 1];
    dt[i] = t[i] - t[i - 1];
  }
  cout << "+ 1" << endl;
  fflush(stdout);
  cin >> t[n] >> s[n];
  ds[n] = s[n] - s[n - 1];
  dt[n] = t[n] - t[n - 1];
  if (dt[1] != 0)
    a[1] = mp[dt[1]];
  else
    a[1] = dt[n];
  if (dt[2] != 0) a[2] = mp[dt[2]];
  if (dt[3] != 0) a[3] = mp[dt[3]];
  int tmp = ds[n] - ds[1] - 1;
  if ((!a[2]) && a[3])
    a[2] = ds[1] / a[3];
  else if ((!a[3]) && a[2])
    a[3] = ds[1] / a[2];
  else if ((!a[2]) && (!a[3])) {
    if (tmp == 0) a[2] = a[3] = 0;
    if (tmp == 2) a[2] = a[3] = 1;
    if (tmp == 1) {
      if (ds[2]) {
        a[3] = 1;
        a[2] = 0;
      } else {
        a[3] = 0;
        a[2] = 1;
      }
    }
  }
  for (int i = 4; i <= n - 1; i++) {
    if (dt[i])
      a[i] = mp[dt[i]];
    else {
      int now = (a[i - 3] + 1) * (a[i - 2] + 1);
      if (ds[i - 1] > now)
        a[i] = 1;
      else
        a[i] = 0;
    }
  }
  a[n] = (ds[n - 1] - (a[n - 2] + 1) * (a[n - 3] + 1)) / ((a[n - 2] + 1));
  cout << "! ";
  for (int i = 1; i <= n; i++) cout << a[i] << " ";
  cout << endl;
  return 0;
}
