#!/usr/bin/env python3
# from typing import *

import sys
import io
import math
import collections
import decimal
import itertools
import bisect
import heapq


def input():
    return sys.stdin.readline()[:-1]


# sys.setrecursionlimit(1000000)

# _INPUT = """13 3
# """
# sys.stdin = io.StringIO(_INPUT)

INF = 10**10


def solve(N, K):
    for M in range(1, INF):
        if M <= K:
            if N <= M*M:
                A = [['.'] * M for _ in range(M)]
                n = 0
                for i in range(M):
                    for j in range(M):
                        if n < N:
                            A[i][j] = '#'
                            n += 1
                return M, A
        else:
            if N <= K*M:
                A = [['.'] * M for _ in range(M)]
                n = 0
                j = 0
                for i in range(M):
                    for _ in range(K):
                        if n < N:
                            A[i][j] = '#'
                            j = (j + 1) % M
                            n += 1
                return M, A
    
    return None, None

N, K = map(int, input().split())
M, A = solve(N, K)

print(M)
for i in range(M):
    print(''.join(A[i]))