import Control.Arrow
import Control.Monad
import Data.List
import qualified Data.ByteString.Char8 as B

main :: IO ()
main = readLine >>= printRes . solve 
    where
        printRes (xs, ys) = mapM_ putStrLn $ (unwords $ map show xs) : ys

solve :: [Int] -> ([Int], [String])
solve [a, b] = ([length ws + length bs, 100], ws ++ reverse bs)
    where
        ws = buildW 
        bs = buildB 

        buildW 
            | m == 0 = take (2 * r - 2) (cycle fills) ++ opens 50
            | otherwise = take (2 * r) (cycle fills) ++ opens m
            where
                (r, m) = a `divMod` 50
                fills = [take 100 $ cycle "#.", replicate 100 '#']
                opens n = ['#' : take 99 xs, '#' : take 99 ys]
                    where
                        (xs, ys) = buildOW n
                buildOW n 
                    | n == 1 = (repeat '.', repeat '.')
                    | otherwise = ('.' : '#' : xs, '#' : '#' : ys)
                    where
                        (xs, ys) = buildOW $ n - 1
        buildB
            | m == 0 = take (2 * r - 2) (cycle fills) ++ opens 50
            | otherwise = take (2 * r) (cycle fills) ++ opens m
            where
                (r, m) = b `divMod` 50
                fills = [take 100 $ cycle "#.", replicate 100 '.']
                opens n = [reverse $ '.' : take 99 xs, reverse $ '.' : take 99 ys]
                    where
                        (xs, ys) = buildOB n 
                buildOB n
                    | n == 1 = (repeat '#', repeat '#')
                    | otherwise = ('#' : '.' : xs, '.' : '.' : ys)
                    where
                        (xs, ys) = buildOB $ n - 1




readLine :: IO [Int]
readLine = unfoldr (\s -> second (maybe B.empty snd . B.uncons) <$> B.readInt s) <$> B.getLine

readContents :: Int -> IO [[Int]]
readContents = flip replicateM readLine