#include <bits/stdc++.h>
using namespace std;
long long inverse(long long x, long long p) {
  long long y = p - 2;
  long long ans = 1;
  while (y != 0) {
    if (y % 2 == 1) ans = (ans * x) % p;
    x = (x * x) % p;
    y = y / 2;
  }
  return ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long d, p;
  cin >> d >> p;
  long long a[d + 1][d + 1];
  for (int j = 0; j <= d; j++) {
    a[0][j] = 1;
    for (int i = 1; i <= d; i++) {
      a[i][j] = (a[i - 1][j] * j) % p;
    }
  }
  long long id[d + 1][d + 1];
  for (int i = 0; i <= d; i++) {
    for (int j = 0; j <= d; j++) {
      id[i][j] = 0;
    }
    id[i][i] = 1;
  }
  for (int i = 0; i <= d; i++) {
    long long inv = inverse(a[i][i], p);
    for (int j = 0; j <= d; j++) {
      if (i != j) {
        long long m = (a[j][i] * inv) % p;
        for (int k = 0; k <= d; k++) {
          long long x = (a[i][k] * m) % p;
          a[j][k] = (a[j][k] - x) % p;
          x = (id[i][k] * m) % p;
          id[j][k] = (id[j][k] - x) % p;
          if (a[j][k] < 0) a[j][k] += p;
          if (id[j][k] < 0) id[j][k] += p;
        }
      }
    }
  }
  for (int i = 0; i <= d; i++) {
    long long inv = inverse(a[i][i], p);
    for (int j = 0; j <= d; j++) {
      a[i][j] = (a[i][j] * inv) % p;
      id[i][j] = (id[i][j] * inv) % p;
    }
  }
  long long s[d + 1];
  long long dC2 = ((d * (d - 1)) / 2) % p;
  long long idC2 = inverse(dC2, p);
  for (int i = 0; i <= d; i++) {
    s[i] = (idC2 * id[i][d - 2]) % p;
  }
  long long p1 = p / 2;
  while (p1 != 0) {
    cout << "+ 4999 4999 4999\n";
    if (p1 % 2 == 1) {
      cout << "+ 4999 5000 5000\n";
    }
    p1 = p1 / 2;
  }
  cout << "+ 1 2 3\n";
  int st = 3000;
  for (int cur = 1; cur <= 3; cur++) {
    cout << "+ " << cur << " 5000 " << st << "\n";
    int xx = 4000;
    for (int i = 0; i <= d; i++) {
      cout << "+ 5000 " << st << " 2000\n";
      cout << "^ 2000 2000\n";
      cout << "+ 5000 5000 " << xx << "\n";
      long long y = s[i];
      while (y != 0) {
        if (y % 2 == 1) {
          cout << "+ " << xx << " 2000 " << xx << "\n";
        }
        cout << "+ 2000 2000 2000\n";
        y = y / 2;
      }
      xx--;
      cout << "+ " << st << " " << (st - 1) << " " << (st - 1) << "\n";
      st--;
    }
    for (int j = 1; j <= d; j++) {
      cout << "+ " << (4000 - j) << " 4000 4000\n";
    }
    cout << "+ 4000 5000 " << (cur + 3) << "\n";
  }
  cout << "+ 4 5 100\n";
  cout << "+ 5000 5000 200\n";
  p1 = p - 1;
  while (p1 != 0) {
    if (p1 % 2 == 1) {
      cout << "+ 100 200 200\n";
    }
    p1 = p1 / 2;
    cout << "+ 100 100 100\n";
  }
  cout << "+ 200 6 300\n";
  cout << "+ 5000 5000 10\n";
  p1 = (p + 1) / 2;
  while (p1 != 0) {
    if (p1 % 2 == 1) {
      cout << "+ 300 10 10\n";
    }
    p1 = p1 / 2;
    cout << "+ 300 300 300\n";
  }
  cout << "f 10" << endl;
  return 0;
}
