main = interact $ unlines . solve . read nšŸ”s = concat $ replicate n s solve 1 = ["4 4", "#.#.", "O#O#", "#.#.", "O#O#"] solve 2 = ["4 4", "O##.", "#.O#", "#.#.", "O#O#"] solve 3 = ["4 4", "O##O", "#..#", "#.#.", "O#O#"] solve 6 = ["6 6", "O#O#O#", "#.#.#.", "#...O#", "O#.##.", "..#O#.", "..O#.."] solve 7 = ["6 6", "O#O##O", "#.#..#", "#...O#", "O#.##.", "..#O#.", "..O#.."] solve 11 = ["6 6", "O##O#O", "#..#.#", "O#...#", "#...#O", "#.#.O#", "O#O##."] solve a = concat [ [ show (2 * h) ++ " " ++ show (2 * w) ] , [ wšŸ”".#", wšŸ”"#O" ] , fšŸ”[ ".#" ++ (w - 2)šŸ”".." ++ ".#", "#O" ++ (w - 2)šŸ”".." ++ "#O" ] , (h - 2 - f) šŸ”[ ".#" ++ (w - 2)šŸ”".." ++ "#.", "#O" ++ (w - 2)šŸ”".." ++ "O#" ] , [ wšŸ”"#O", wšŸ”".#" ] ] where (w,h,f) = head $ [ (w,h,a-lo) | w <- [3..50], h <- [3..50], let lo = 4 * (w - 2) * (h - 2), lo <= a && a <= lo + h - 2 ]