func_code_string: #include <bits/stdc++.h>   using namespace std;   int cur;   bool c[1011][1011];   int x[33], y[33], z[33];   void connect(int target, int between) {     for (int i = (1), _b = (between); i <= _b; i++) z[i] = ++cur;     z[between + 1] = target;     z[0] = 1;     for (int i = (0), _b = (between); i <= _b; i++) c[z[i]][z[i + 1]] = true;   }   int main() {     int n;     while (cin >> n) {       memset(c, 0, sizeof c);       cur = 2;       for (int i = (1), _b = (30); i <= _b; i++) x[i] = ++cur;       for (int i = (1), _b = (30); i <= _b; i++) y[i] = ++cur;       c[x[30]][2] = c[y[30]][2] = true;       for (int i = (1), _b = (29); i <= _b; i++) {         c[x[i]][x[i + 1]] = true;         c[y[i]][y[i + 1]] = true;         c[y[i]][x[i + 1]] = true;         c[x[i]][y[i + 1]] = true;       }       for (int i = (29), _b = (0); i >= _b; i--)         if ((1 << i) <= n) {           n -= 1 << i;           connect(x[30 - i], 30 - i - 1);         }       cout << cur << endl;       for (int i = (1), _b = (cur); i <= _b; i++) {         for (int j = (1), _b = (cur); j <= _b; j++)           if (c[i][j] || c[j][i])             putchar( Y );           else             putchar( N );         puts(  );       }     }     return 0;   }   