#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1005;
int K, N, Ans, Cnt;
int num[MAXN], dfn[MAXN];
int vis[MAXN][MAXN];
vector<int> P[MAXN];
void Add(int x, int y) { vis[x][y] = vis[y][x] = 1; }
int main() {
  scanf("%d", &K);
  N = 2;
  num[0] = 1;
  for (int i = 30; i >= 0; i--)
    if ((1 << i) & K) {
      Ans = 2 * i;
      K -= (1 << i);
      if (i == 0) {
        Ans = 1;
        Add(1, 2);
        break;
      }
      Add(1, ++N);
      Add(1, ++N);
      for (int j = 1; j < i; j++) {
        Add(N - 1, N + 1);
        Add(N, N + 1);
        N++;
        num[++Cnt] = N;
        Add(N, N + 1);
        Add(N, N + 2);
        N += 2;
      }
      Add(N - 1, 2);
      Add(N, 2);
      num[++Cnt] = 2;
      break;
    }
  if (K) {
    Cnt = 0;
    Add(1, ++N);
    for (int i = 1; i <= Ans - 1; i++) {
      Add(N, N + 1);
      N++;
      if (i % 2 == 1) dfn[++Cnt] = N;
    }
    Add(N, 2);
  }
  for (int i = 30; i >= 0; i--)
    if ((1 << i) & K) Add(num[i], dfn[i + 1]);
  printf("%d\n", N);
  for (int i = 1; i <= N; i++) {
    for (int j = 1; j <= N; j++)
      if (!vis[i][j])
        printf("N");
      else
        printf("Y");
    puts("");
  }
}
