package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n, k int
fmt.Fscan(in, &n, &k)
g := make([][]byte, 4)
for i := 0; i < 4; i++ {
g[i] = make([]byte, n)
for j := 0; j < n; j++ {
g[i][j] = '.'
}
}
m := n / 2
if k%2 == 1 {
g[1][m] = '#'
k--
}
if k > 2*(n-3) {
g[1][m] = '#'
g[2][m] = '#'
k -= 2
}
for c := 1; c < m && k > 0; c++ {
rc := n - 1 - c
for r := 1; r <= 2 && k > 0; r++ {
g[r][c] = '#'
g[r][rc] = '#'
k -= 2
}
}
if k != 0 {
fmt.Fprintln(out, "NO")
return
}
fmt.Fprintln(out, "YES")
for i := 0; i < 4; i++ {
fmt.Fprintln(out, string(g[i]))
}
}