## https://yukicoder.me/problems/no/2339 from collections import deque def main(): N = int(input()) if N == 1: print(2, 2) print("..") print("#.") return dot = [["#" for _ in range(2000)] for _ in range(2000)] index_h = 0 index_w = 0 queue = deque() queue.append(N) while len(queue) > 0: n = queue.popleft() n1 = n // 2 n2 = n - n1 for i in range(index_h, index_h + n1 + 1): for j in range(index_w, index_w+ n2 + 1): dot[i][j] = "." index_h += n1 index_w += n2 if n1 > 1: queue.append(n1) if n2 > 1: queue.append(n2) H = index_h + 1 W = index_w + 1 print(H, W) for h in range(H): array = [] for w in range(W): array.append(dot[h][w]) row = "".join(array) print(row) if __name__ == "__main__": main()