#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;
}
