func_code_string: #include <bits/stdc++.h>   const int t = 50;   int f[t][t][t], g[t][t];   long long p[t];   int cnt;   void mul(int c[t][t], int a[t][t], int b[t][t], int n) {     int d[t][t];     memset(d, 0, sizeof d);     for (int i = 0; i < n; i++)       for (int j = 0; j < n; j++)         for (int k = 0; k < n; k++) d[i][k] ^= a[i][j] & b[j][k];     memcpy(c, d, sizeof d);   }   bool quick(long long m, int n) {     int i, j, k, res[t], ans[t];     for (i = 0; i < n; i++) ans[i] = 1;     for (i = 0; m; m >>= 1, i++)       if (m & 1) {         memset(res, 0, sizeof res);         for (j = 0; j < n; j++)           for (k = 0; k < n; k++) res[k] ^= ans[j] & f[i][j][k];         memcpy(ans, res, sizeof ans);       }     for (i = 0; i < n && ans[i]; i++)       ;     return i == n;   }   bool checker(long long m, int n) {     if (!quick(m, n)) return false;     for (int i = 0; i < cnt; i++)       if (quick(p[i], n)) return false;     return true;   }   int main() {     int ans, i, j, n;     long long s, m;     srand(0x51ac);     scanf( %d , &n);     m = s = (1ll << n) - 1;     for (cnt = 0, i = 2; i * (long long)i <= s; i++)       if (s % i == 0) {         p[cnt++] = m / i;         for (; s % i == 0; s /= i)           ;       }     if (s != 1) p[cnt++] = m / s;     do {       memset(f, 0, sizeof f);       for (i = 1; i < n; i++) f[0][i][i - 1] = 1;       for (f[0][0][n - 1] = i = 1; i < n; i++, j >>= 1)         f[0][i][n - 1] = rand() & 1;       for (i = 1; i < n; i++) mul(f[i], f[i - 1], f[i - 1], n);     } while (!checker(m, n));     for (i = 0; i < n; i++) printf( %d  , f[0][n - 1 - i][n - 1]);     for (puts(  ), i = 0; i < n; i++) printf( 1  );     return 0;   }   