#include <bits/stdc++.h>
using namespace std;
int d, p;
const int zero = 5000;
inline int add(int a, int b) {
  if ((a += b) >= p) a -= p;
  return a;
}
inline int dec(int a, int b) {
  if ((a -= b) < 0) a += p;
  return a;
}
inline int mult(int a, int b) {
  long long t = 1ll * a * b;
  if (t >= p) t %= p;
  return t;
}
inline int power(int a, int b) {
  int out = 1;
  while (b) {
    if (b & 1) out = mult(out, a);
    a = mult(a, a);
    b >>= 1;
  }
  return out;
}
void add(int a, int b, int c) { printf("+ %d %d %d\n", a, b, c); }
void pw(int a, int b) { printf("^ %d %d\n", a, b); }
void init_clear() {
  int f = p - 1;
  while (f) {
    if (f & 1) add(4999, 5000, 5000);
    add(4999, 4999, 4999);
    f >>= 1;
  }
}
const int one = 4998;
void clear(int p) { add(zero, zero, p); }
void mult(int a, int b, int v, bool clean = 1) {
  if (clean) clear(b);
  add(a, zero, 4997);
  while (v) {
    if (v & 1) add(b, 4997, b);
    add(4997, 4997, 4997);
    v >>= 1;
  }
}
void dec(int a, int b, int c) {
  mult(b, c, p - 1);
  add(a, c, c);
}
int c[15][15], buf[15][15];
void solve() {
  for (int i = 0; i <= d; i++) {
    int pos = -1;
    for (int j = i; j <= d; j++) {
      if (buf[j][i]) {
        pos = j;
        break;
      }
    }
    assert(pos != -1);
    swap(buf[pos], buf[i]);
    for (int j = 0; j <= d; j++) {
      if (j != i) {
        int iv = mult(buf[j][i], power(buf[i][i], p - 2));
        for (int k = 0; k <= d + 1; k++)
          buf[j][k] = dec(buf[j][k], mult(iv, buf[i][k]));
      }
    }
  }
  for (int i = 0; i <= d; i++) {
    buf[i][d + 1] = mult(buf[i][d + 1], power(buf[i][i], p - 2));
  }
}
void sqr(int a, int b, bool clean = 1) {
  if (clean) clear(b);
  add(a, zero, 4995);
  for (int i = 0; i <= d; i++) {
    pw(4995, 4996);
    mult(4996, 4994, buf[i][d + 1]);
    add(4994, b, b);
    add(4995, one, 4995);
  }
}
int main() {
  scanf("%d%d", &d, &p);
  init_clear();
  c[0][0] = 1;
  for (int i = 1; i <= d; i++) {
    c[i][0] = 1;
    for (int j = 1; j <= d; j++) c[i][j] = c[i - 1][j] + c[i - 1][j - 1];
  }
  for (int i = 0; i <= d; i++) {
    for (int j = 0; j <= d; j++) {
      buf[i][j] = mult(c[d][i], power(j, i));
    }
  }
  buf[d - 2][d + 1] = 1;
  solve();
  add(1, 2, 3);
  sqr(1, 4);
  sqr(2, 5);
  sqr(3, 6);
  dec(6, 4, 7);
  dec(7, 5, 8);
  mult(8, 9, power(2, p - 2));
  puts("f 9");
  return 0;
}
