import Control.Monad (replicateM) import Data.List (transpose) main :: IO () main = do [r, k] <- map read . words <$> getLine [h, w] <- map read . words <$> getLine cs <- replicateM h getLine putStrLn . unlines $ solve r k cs solve :: Int -> Int -> [[Char]] -> [[Char]] solve r k cs = expand2 k $ (iterate rotate cs) !! (r `div` 90) rotate :: [[a]] -> [[a]] rotate = map reverse . transpose expand :: Int -> [a] -> [a] expand n = concat . map (replicate n) expand2 :: Int -> [[a]] -> [[a]] expand2 n = map (expand n) . expand n