def solve(n): if n == 1: return ['.'] if n == 3: return ['...', '.#.', '..#'] if n == 5: return ['.....', '.#.#.', '..#..', '.#.#.', '....#'] if n == 7: return ['......#', '.#.#.#.', '..#....', '.#.#.#.', '....#..', '.#.#.#.', '#.....#'] if n == 9: return ['.........', '.#.#.#.#.', '..#...#..', '.#.#.#.#.', '....#....', '.#.#.#.#.', '..#...#..', '.#.#.#.#.', '........#'] if n == 11: return ['..........#', '.#.#.#.#.#.', '..#...#....', '.#.#.#.#.#.', '....#...#..', '.#.#.#.#.#.', '..#........', '.#.#.#.#.#.', '....#...#..', '.#.#.#.#.#.', '#.....#....'] if n % 2 == 0: ans2 = solve(n - 1) for i in range(n - 1): if ans2[0][i] == '#' or ans2[i][0] == '#': return [] ans = ['#.' * (n // 2)] for i in range(n - 1): ans.append(('.' if i % 2 == 0 else '#') + ans2[i]) return ans w = n // 2 ans = [] for i in range(n): if i % 2 == 0: ans.append(['.'] * n) else: ans.append(['.', '#'] * w + ['.']) if w % 2 == 0: # ┌─── # │┌── # ││┌─ for l in range(w // 3): s = l * 6 + 2 for i in range(s, n - 1, 2): if (i - s) % 4 == 0: ans[i][s] = '#' ans[s][i] = '#' else: ans[i][s + 2] = '#' ans[s + 2][i] = '#' if s % 4 == 2: ans[-1][s + 2] = '#' ans[s + 4][-1] = '#' else: ans[-1][s] = '#' if w % 6 == 2: ans[-3][-3] = '#' ans[-1][-1] = '#' else: # ┌┐┌ # │││ # │└┘ for j2 in range(w - 1): j = j2 * 2 + 2 if j2 % 6 == 0 or j2 % 6 == 4: for i in range(2, n - 1, 4): ans[i][j] = '#' elif j2 % 6 == 1 or j2 % 6 == 3: for i in range(4, n - 1, 4): ans[i][j] = '#' elif j2 % 6 == 2: ans[2][j] = '#' else: ans[-3][j] = '#' ans[-1][2] = '#' if w % 6 == 1: ans[-3][-3] = '.' ans[-1][-3] = '#' for i in range(2, n - 1, 4): ans[i][-1] = '#' elif w % 6 == 3: ans[2][-1] = '#' ans[-3][-7] = '.' ans[-1][-7] = '#' else: ans[2][-1] = '#' ans[-3][-11] = '.' ans[-1][-11] = '#' for i in range(10, n, 8): ans[i][-1] = '#' ans = [''.join(row) for row in ans] return ans n = int(input()) ans = solve(n) if len(ans) == 0: print(-1) else: print('\n'.join(ans))