#include <bits/stdc++.h>
using namespace std;
long long work(long long x) {
  for (long long i = 1;; i++)
    if (i * (i - 1) / 2 == x) return i;
  return (1 + sqrt((x << 3) + 1)) / 2;
}
long long n, w[105][2], a[105];
signed main() {
  scanf("%lld%lld%lld", &n, &w[1][0], &w[1][1]);
  if (n == 4) a[1] = 1;
  for (long long i = 2; i <= n - 2; i++) {
    printf("+ %lld\n", i);
    fflush(stdout);
    scanf("%lld%lld", &w[i][0], &w[i][1]);
  }
  printf("+ %lld\n", n);
  fflush(stdout);
  scanf("%lld%lld", &w[0][0], &w[0][1]);
  printf("+ %lld\n", n - 1);
  fflush(stdout);
  scanf("%lld%lld", &w[n - 1][0], &w[n - 1][1]);
  printf("+ %lld\n", n);
  fflush(stdout);
  scanf("%lld%lld", &w[n][0], &w[n][1]);
  w[n][0] -= w[n - 1][0], w[n][1] -= w[n - 1][1];
  w[n - 1][0] -= w[0][0], w[n - 1][1] -= w[0][1];
  w[0][0] -= w[n - 2][0], w[0][1] -= w[n - 2][1];
  for (long long i = n - 2; i > 2; i--)
    w[i][0] -= w[i - 1][0], w[i][1] -= w[i - 1][1];
  a[n] = work(w[n][0]) - 1;
  a[n - 2] = w[n][1] - w[0][1] - 1;
  a[n - 1] = w[n][1] / (a[n - 2] + 1) - 1;
  a[n - 3] += (w[n - 1][1] - (a[n] + 1) * (a[n - 2] + 1)) / (a[n - 2] + 1) - 1;
  for (long long i = n - 4; i >= 2; i--)
    a[i] = (w[i + 2][1] - (a[i + 1] + 1) * a[i + 3] - a[i + 3] * a[i + 4]) /
               (a[i + 1] + 1) -
           1;
  if (n != 4) a[1] = (w[3][1] - (a[2] + 1) * a[4] - a[4] * a[5]) / (a[2] + 1);
  printf("! ");
  for (long long i = 1; i <= n; i++) printf("%lld ", a[i]);
  fflush(stdout);
  return 0;
}
