← Home
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')
	}
}