#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5;
int mod;
int add(int x, int y) {
  if ((x += y) >= mod) x -= mod;
  return x;
}
int mul(int x, int y) {
  long long z = (long long)x * y;
  return z - z / mod * mod;
}
int powt(int a, int b) {
  int r = 1;
  while (b) {
    if (b & 1) r = mul(r, a);
    a = mul(a, a);
    b >>= 1;
  }
  return r;
}
int a[12][12], b[12][12], c[12][12], d;
void work(int x, int y, int w) {
  printf("+ 4000 4000 %d\n", y);
  while (w) {
    if (w & 1) printf("+ %d %d %d\n", x, y, y);
    printf("+ %d %d %d\n", x, x, x);
    w >>= 1;
  }
}
void solve(int t, int s) {
  int i, j;
  printf("+ %d 5000 11\n", s);
  for (i = 1; i < d; i++) printf("+ %d 5000 %d\n", 10 + i, 10 + i + 1);
  printf("^ %d 10\n", s);
  for (i = 1; i <= d; i++) printf("^ %d %d\n", 10 + i, 10 + i);
  printf("+ 4000 4000 %d\n", t);
  for (i = 0; i <= d; i++) {
    int w = b[d - 2][i];
    work(10 + i, 100 + i, w);
    printf("+ %d %d %d\n", 100 + i, t, t);
  }
}
int main() {
  int i, j, k, w;
  scanf("%d%d", &d, &mod);
  for (i = 0; i <= d; i++) {
    c[i][0] = 1;
    for (j = 1; j <= i; j++) c[i][j] = add(c[i - 1][j], c[i - 1][j - 1]);
  }
  for (i = 0; i <= d; i++) {
    for (j = 0, k = 1; j <= d; j++) {
      a[i][j] = mul(c[d][j], k);
      k = mul(k, i);
    }
  }
  for (i = 0; i <= d; i++) b[i][i] = 1;
  for (i = 0; i <= d; i++) {
    for (j = i; j <= d; j++) {
      if (a[j][i]) break;
    }
    if (j > d) cout << -1 << endl;
    for (k = 0; k <= d; k++) {
      swap(a[j][k], a[i][k]);
      swap(b[j][k], b[i][k]);
    }
    w = powt(a[i][i], mod - 2);
    for (k = 0; k <= d; k++) {
      a[i][k] = mul(a[i][k], w);
      b[i][k] = mul(b[i][k], w);
    }
    for (j = 0; j <= d; j++) {
      if (j == i || !a[j][i]) continue;
      w = mod - a[j][i];
      for (k = 0; k <= d; k++) {
        a[j][k] = add(a[j][k], mul(a[i][k], w));
        b[j][k] = add(b[j][k], mul(b[i][k], w));
      }
    }
  }
  w = mod - 1;
  while (w) {
    if (w & 1) printf("+ 1000 4000 4000\n");
    printf("+ 1000 1000 1000\n");
    w >>= 1;
  }
  solve(3, 1);
  solve(4, 2);
  printf("+ 1 2 6\n");
  solve(5, 6);
  work(3, 10, mod - 1);
  work(4, 11, mod - 1);
  printf("+ 10 5 5\n");
  printf("+ 11 5 5\n");
  work(5, 1, (mod + 1) >> 1);
  puts("f 1");
  return 0;
}
