package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var k int64
fmt.Fscan(in, &k)
const maxN = 1000
g := make([][]byte, maxN)
for i := 0; i < maxN; i++ {
g[i] = make([]byte, maxN)
for j := 0; j < maxN; j++ {
g[i][j] = 'N'
}
}
add := func(u, v int) {
g[u][v] = 'Y'
g[v][u] = 'Y'
}
n := 2
a := make([]int, 30)
b := make([]int, 30)
for i := 0; i < 30; i++ {
a[i] = n
n++
b[i] = n
n++
}
add(a[0], 1)
add(b[0], 1)
for i := 1; i < 30; i++ {
add(a[i], a[i-1])
add(a[i], b[i-1])
add(b[i], a[i-1])
add(b[i], b[i-1])
}
for i := 0; i < 30; i++ {
if (k>>i)&1 == 1 {
prev := 0
for j := 0; j < 29-i; j++ {
x := n
n++
add(prev, x)
prev = x
}
add(prev, a[i])
}
}
fmt.Fprintln(out, n)
for i := 0; i < n; i++ {
out.Write(g[i][:n])
out.WriteByte('\n')
}
}