#include <bits/stdc++.h>
using namespace std;
char mmp[1234][1234];
bool vis[1234][1234];
long long Po[33];
int num[33];
int main() {
  int k;
  Po[0] = 1;
  for (int i = 1; i <= 32; i++) {
    Po[i] = (long long)2 * Po[i - 1];
  }
  for (int i = 1; i <= 1111; i++) {
    for (int j = 1; j <= 1111; j++) {
      mmp[i][j] = 'N';
    }
  }
  memset(num, 0, sizeof(num));
  scanf("%d", &k);
  int gg = k, cnt = 0;
  while (gg) {
    num[cnt++] = gg % 2;
    gg /= 2;
  }
  cnt--;
  int gm = 3;
  for (int i = 1; i < 2 * cnt; i++) {
    mmp[gm][gm + 1] = mmp[gm + 1][gm] = 'Y';
    gm++;
  }
  int ed = gm;
  mmp[gm][2] = mmp[2][gm] = 'Y';
  mmp[1][gm + 1] = mmp[gm + 1][1] = 'Y';
  gm++;
  int tm = 1;
  for (int i = 0; i < cnt; i++) {
    tm += 2;
    if (num[i]) {
      mmp[gm][tm] = mmp[tm][gm] = 'Y';
    }
    if (i == cnt - 1) {
      mmp[gm][gm + 1] = mmp[gm][gm + 2] = mmp[gm + 1][gm] = mmp[gm + 2][gm] =
          'Y';
      mmp[gm + 1][ed] = mmp[gm + 2][ed] = mmp[ed][gm + 1] = mmp[ed][gm + 2] =
          'Y';
      gm += 2;
      break;
    }
    mmp[gm][gm + 1] = mmp[gm][gm + 2] = mmp[gm + 1][gm] = mmp[gm + 2][gm] = 'Y';
    mmp[gm + 1][gm + 3] = mmp[gm + 2][gm + 3] = mmp[gm + 3][gm + 1] =
        mmp[gm + 3][gm + 2] = 'Y';
    gm += 3;
  }
  if (cnt == 0) {
    gm = 2;
    mmp[1][2] = mmp[2][1] = 'Y';
    mmp[1][1] = mmp[2][2] = 'N';
  }
  printf("%d\n", gm);
  for (int i = 1; i <= gm; i++) {
    for (int j = 1; j <= gm; j++) {
      putchar(mmp[i][j]);
    }
    puts("");
  }
  return 0;
}
