#include <bits/stdc++.h>
using namespace std;
int ans[1003][1003];
int a;
int num[20009];
int top = 0;
int n;
int main() {
  scanf("%d", &a);
  if (a == 1) {
    printf("2\n");
    printf("NY\nYN\n");
    return 0;
  }
  memset((ans), (0), sizeof((ans)));
  n = 1;
  for (int i = 2; i <= 33; i++) {
    ans[i][i - 1] = ans[i - 1][i] = 1;
  }
  n = 33;
  for (int i = 0; (1 << i) <= a; i++) {
    if (a & (1 << i)) {
      n += 2 * i;
    }
  }
  n++;
  int cur = 34;
  for (int i = 0; (1 << i) <= a; i++) {
    if (a & (1 << i)) {
      if (i == 0)
        ans[33][n] = ans[n][33] = 1;
      else {
        ans[cur][33 - i] = ans[33 - i][cur] = 1;
        ans[cur + 1][33 - i] = ans[33 - i][cur + 1] = 1;
        cur += 2;
        for (int j = 1; j < i; j++) {
          ans[cur][cur - 2] = ans[cur - 2][cur] = 1;
          ans[cur + 1][cur - 1] = ans[cur - 1][cur + 1] = 1;
          ans[cur][cur - 1] = ans[cur - 1][cur] = 1;
          ans[cur + 1][cur - 2] = ans[cur - 2][cur + 1] = 1;
          cur += 2;
        }
        ans[n][cur - 1] = ans[cur - 1][n] = 1;
        ans[n][cur - 2] = ans[cur - 2][n] = 1;
      }
    }
  }
  printf("%d\n", n);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      int a, b;
      a = i, b = j;
      if (a == 2)
        a = n;
      else if (a == n)
        a = 2;
      if (b == 2)
        b = n;
      else if (b == n)
        b = 2;
      printf("%c", ans[a][b] == 0 ? 'N' : 'Y');
    }
    putchar(10);
  }
  return 0;
}
