#include <bits/stdc++.h>
using namespace std;
int t, s;
pair<int, int> query(int i) {
  int t2, s2;
  cout << "+ " << i + 1 << endl;
  cin >> t2 >> s2;
  pair<int, int> r = make_pair(t2 - t, s2 - s);
  t = t2, s = s2;
  return r;
}
pair<int, int> a[100];
int ans[100];
int main() {
  int n;
  cin >> n >> t >> s;
  int i;
  for (i = 0; i < n - 1; i++) a[i] = query(i);
  pair<int, int> p = query(0);
  int s = p.second - a[0].second - 1;
  ans[0] = 0;
  while (ans[0] * (ans[0] + 1) / 2 < p.first) ans[0]++;
  if (a[1].first > 0) {
    ans[1] = 1;
    while (ans[1] * (ans[1] - 1) / 2 < a[1].first) ans[1]++;
    ans[2] = s - ans[1];
  } else if (a[2].first > 0) {
    ans[2] = 1;
    while (ans[2] * (ans[2] - 1) / 2 < a[2].first) ans[2]++;
    ans[1] = s - ans[2];
  } else if (s == 0)
    ans[1] = ans[2] = 0;
  else if (s == 2)
    ans[1] = ans[2] = 1;
  else {
    if (a[1].second == 0)
      ans[1] = 1, ans[2] = 0;
    else
      ans[1] = 0, ans[2] = 1;
  }
  for (i = 3; i < n; i++) {
    if (i == n - 1)
      ans[i] = (a[i - 1].second - (ans[i - 3] + 1) * (ans[i - 2] + 1)) /
               (ans[i - 2] + 1);
    else {
      if (a[i - 1].second == (ans[i - 3] + 1) * (ans[i - 2] + 1))
        ans[i] = 0;
      else {
        ans[i] = 1;
        while (ans[i] * (ans[i] - 1) / 2 < a[i].first) ans[i]++;
      }
    }
  }
  cout << "!";
  for (i = 0; i < n; i++) cout << " " << ans[i];
  cout << endl;
  return 0;
}
