#include <bits/stdc++.h>
int n, ans[105], cnt;
struct node {
  int x, y;
} a[105];
void ask(int k) {
  printf("+ %d\n", k);
  fflush(stdout);
  cnt++;
  scanf("%d%d", &a[cnt].x, &a[cnt].y);
}
int main() {
  int i;
  scanf("%d", &n);
  scanf("%d%d", &a[0].x, &a[0].y);
  for (i = 1; i <= n; i++) ans[i] = -1;
  for (i = 1; i <= n - 1; i++) ask(i);
  ask(1);
  for (i = n; i >= 1; i--) a[i].x -= a[i - 1].x, a[i].y -= a[i - 1].y;
  ans[1] = a[n].x - a[1].x;
  for (i = 2; i <= n - 1; i++)
    if (a[i].x) {
      ans[i] = 0;
      while (ans[i] * (ans[i] - 1) / 2 < a[i].x) ans[i]++;
    }
  if (ans[3] == -1) ans[3] = (a[2].y > 0);
  if (ans[2] == -1) ans[2] = a[n].y / (ans[3] + 1) - 1;
  for (i = 3; i <= n - 2; i++)
    if (ans[i + 1] == -1) {
      a[i].y -= (ans[i - 1] + 1) * (ans[i - 2] + 1);
      ans[i + 1] = (a[i].y > 0);
    }
  ans[n] =
      (a[n - 1].y - (ans[n - 2] + 1) * (ans[n - 3] + 1)) / (ans[n - 2] + 1);
  printf("!");
  for (i = 1; i < n; i++) printf(" %d", ans[i]);
  printf(" %d\n", ans[n]);
  return 0;
}
