아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

화단 재배치

시간 제한3초메모리 제한1024 MB

요약
격자에서 d×d 창을 시계 방향으로 90도씩 돌리며 정해진 순서대로 이동한 뒤의 격자를 구합니다.
난이도

어려움10점 중 8점

유형
시뮬레이션, 행렬, 구현
정답자
아직 제출이 없습니다

문제

준표는 집 앞에 있는 화단을 꾸몄다. 화단은 n×mn \times m 격자 모양이며, 각 칸에 꽃이 한 송이씩 심겨 있다. 꽃 색은 A부터 Z까지의 대문자에 대응하는 26가지이다. 어느 날 준표는 화단을 다시 꾸미고 싶어졌다.

화단이 너무 커서 꽃을 하나씩 옮길 수는 없다. 준표는 한 변의 길이가 dd인 정사각형 땅을 들어 올려 회전시킬 수 있는 장비를 빌렸다. 그는 화단이 제대로 다시 꾸며지기를 기대하며 다음 순서로 공사를 계획했다.

  1. 장비를 놓아 처음 dd개 행과 처음 dd개 열에 있는 꽃만 장비 안에 들어오게 한다.
  2. 장비 안의 d×dd \times d 정사각형을 시계 방향으로 90∘90^\circ 회전시킨다. 이 정사각형에 마지막 dd개 행과 마지막 dd개 열의 꽃이 들어 있으면 공사가 끝난다. 그렇지 않고 정사각형에 마지막 dd개 열의 꽃이 없으면 장비를 오른쪽으로 xx칸 옮긴다. 그렇지 않으면 장비를 아래로 yy칸 옮기고, 처음 dd개 열의 꽃이 들어오도록 맨 왼쪽까지 옮긴다.
  3. 공사가 끝날 때까지 2번을 반복한다.

장비는 화단 밖으로 절대 나가지 않는다. xx, yy, dd는 공사를 시작하기 전에 신중하게 정해지기 때문이다.

준표는 결과를 알기 전에는 공사를 시작할 수 없다. 결과를 출력하는 프로그램을 작성하라.

입력

첫 줄에 다섯 정수 nn, mm, yy, xx, dd가 주어진다 (1≤n×m≤1061 \leq n \times m \leq 10^6, 1≤y≤n1 \leq y \leq n, 1≤x≤m1 \leq x \leq m, 1≤d≤min⁡(n,m)1 \leq d \leq \min(n, m), n≡d(mody)n \equiv d \pmod y, m≡d(modx)m \equiv d \pmod x). 다음 nn개 줄에는 각각 정확히 mm개의 대문자가 주어지며, 이것이 현재 화단이다.

출력

공사를 마친 뒤의 화단을 nn개 줄로 출력한다. 각 줄에는 정확히 mm개의 대문자가 있다.

힌트

앞의 첫 번째 테스트에서 화단은 다음과 같이 바뀐다.

예제2

  1. 예제 1

    입력
    4 4 1 1 2
    AAAA
    BBBB
    AAAA
    BBBB
    
    예상 출력
    BAAA
    ABBB
    BAAA
    BBBA
    
  2. 예제 2

    입력
    6 5 1 2 3
    RBRCY
    YBPBR
    PBRCY
    CYPBR
    PBRCY
    CYPBR
    
    예상 출력
    PYRBR
    CRCBB
    PPBPY
    CRCYB
    YRBCY
    PYRBR