func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 22;   int d, p, q;   int c[N][N], s[5555];   int a[N][N], b[N][N], f[N];   int fpow(int x, int y = p - 2) {     if (!y) return 1;     long long z = fpow(x, y >> 1);     z = z * z % p;     if (y & 1) z = z * x % p;     return z;   }   int w;   void pr(int x, int y, int z = 0) {     if (z)       printf( + %d %d %d n , x, y, z);     else       printf( ^ %d %d n , x, y);   }   void mul(int r, int x) {     int t = 100, i;     if (x % 2 == 0) x += p;     pr(r, r, t);     x--;     for (i = 2; x; i = i + i) {       if (x & i) pr(r, t, r), x -= i;       pr(t, t, t);     }   }   void go(int r) {     int t = 10, i;     mul(9, 0);     for (i = t; i <= t + d; i = i + 1) {       pr(8, 9, i);       mul(i, i - t);       pr(i, r, i);       pr(i, i);       mul(i, b[q][i - t]);     }     pr(9, 9, r);     for (i = t; i <= t + d; i = i + 1) pr(r, i, r);   }   int main() {     int i, j, k, e, x;     cin >> d >> p;     for (i = 0; i < N; i = i + 1) {       c[i][0] = 1;       for (j = 1; j <= i; j = j + 1)         c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % p;     }     for (i = 0; i <= d; i = i + 1) {       for (j = 0; j <= d; j = j + 1)         a[i][j] = (long long)fpow(i, d - j) * c[d][j] % p;       b[i][i] = 1;     }     for (i = 0; i <= d; i = i + 1) {       for (j = 0; j <= d; j = j + 1)         if (!f[j] && a[j][i]) break;       e = j;       f[e] = 1;       if (i == 2) q = j;       x = fpow(a[j][i]);       for (k = 0; k <= d; k = k + 1) {         a[e][k] = (long long)a[e][k] * x % p;         b[e][k] = (long long)b[e][k] * x % p;       }       for (j = 0; j <= d; j = j + 1) {         if (j == e || !a[j][i]) continue;         x = a[j][i];         for (k = i; k <= d; k = k + 1)           a[j][k] = (a[j][k] - (long long)a[e][k] * x % p + p) % p;         for (k = 0; k <= d; k = k + 1)           b[j][k] = (b[j][k] - (long long)b[e][k] * x % p + p) % p;       }     }     pr(1, 2, 3);     go(1);     go(2);     go(3);     mul(1, p - 1);     mul(2, p - 1);     pr(1, 2, 1);     pr(1, 3, 1);     mul(1, fpow(2));     printf( f 1 n );     return 0;   }   