#include <bits/stdc++.h>
using namespace std;
const int maxn = 110;
int n, tr[maxn], st[maxn];
map<int, int> mp;
int iszero[maxn], nowc[maxn];
void check(int x, int delta) {
  if (iszero[x])
    nowc[x] = 1;
  else if (!delta)
    nowc[x] = 2;
  else
    nowc[x] = mp[delta] + 1;
}
int main() {
  scanf("%d", &n);
  scanf("%d%d", &tr[0], &st[0]);
  for (register int i = 2; i <= 220; ++i)
    mp[1ll * i * (i - 1) * (i + 1) / 6 - 1ll * i * (i - 1) * (i - 2) / 6] = i;
  puts("+ 1");
  fflush(stdout);
  scanf("%d%d", &tr[1], &st[1]);
  puts("+ 2");
  fflush(stdout);
  scanf("%d%d", &tr[2], &st[2]);
  if (st[2] - st[1] == 0) iszero[3] = 1;
  puts("+ 3");
  fflush(stdout);
  scanf("%d%d", &tr[3], &st[3]);
  check(3, tr[3] - tr[2]);
  puts("+ 1");
  fflush(stdout);
  scanf("%d%d", &tr[4], &st[4]);
  check(1, tr[4] - tr[3]);
  nowc[2] = (st[4] - st[3]) / nowc[3];
  if (st[3] - st[2] == (nowc[1] - 1) * nowc[2]) iszero[4] = 1;
  for (register int i = 4; i <= n - 1; ++i) {
    printf("+ %d\n", i);
    fflush(stdout);
    scanf("%d%d", &tr[i + 1], &st[i + 1]);
    check(i, tr[i + 1] - tr[i]);
    if (st[i + 1] - st[i] == nowc[i - 1] * nowc[i - 2]) iszero[i + 1] = 1;
  }
  if (n != 4)
    nowc[n] = (st[n] - st[n - 1] - nowc[n - 2] * nowc[n - 3]) / nowc[n - 2];
  else
    nowc[n] = (st[3] - st[2] - (nowc[1] - 1) * nowc[2]) / nowc[2];
  printf("! %d ", nowc[1] - 2);
  for (register int i = 2; i <= n - 1; ++i) printf("%d ", nowc[i] - 1);
  printf("%d", nowc[n]);
  return 0;
}
