問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
H 行 W 列のグリッドがあり、各マスは . か # のいずれかです。
上から i 行目、右から j 列目をマス (i,j) と表します。
このグリッドはトーラス状であるとみなします。
すなわち、各 i (1 ≦ i ≦ H) に対してマス (i,W) の右にマス (i,1) があり、各 j (1 ≦ j ≦ W) に対して マス(H,j) の下にマス (1,j) があるとします。
Q 個のクエリが与えられます。
各クエリは以下の 2 種類のいずれかです。
・ 1 p : 上から p 行目のマスを左に 1 マスずつずらす。言い換えれば、マス (p,j) (1 ≦ j ≦ W) をマス (p,j) の右にあるマスで同時に置き換える。
・ 2 q : 左から q 列目のマスを上に 1 マスずつずらす。言い換えれば、マス (i,q) (1 ≦ i ≦ H) をマス (i,q) の下にあるマスで同時に置き換える。
すべてのクエリを順に処理した後のグリッドを出力してください。
入力は以下のフォーマットで与えられます。
H W Q
S_1
S_2
...
S_H
query_1
query_2
...
query_Q
・ 1 行目には、グリッドの行数と列数を表す整数 H, W とクエリの数を表す整数 Q がこの順に空白区切りで与えられます。
・ 続く H 行の i (1 ≦ i ≦ H) 行目には、i 行目のグリッドの状態を表す文字列 S_i が与えられます。
・ 続く Q 行の i (1 ≦ i ≦ Q) 行目には、i 個目のクエリが与えられます。
・ 入力は合計で H+Q+1 行からなり、入力値最終行の末尾に改行が1つ入ります。
各クエリは以下の 2 種類のいずれかのフォーマットで与えられます。
1 p
2 q
期待する出力は H 行からなります。
i (1 ≦ i ≦ H) 行目には、すべてのクエリを順に処理した後のグリッドの i 行目を出力してください。
最後は改行し、余計な文字、空行を含んではいけません。
すべてのテストケースにおいて、以下の条件をみたします。
・ 1 ≦ H, W ≦ 500
・ 1 ≦ Q ≦ 10^4
・ S_i は . と # からなる長さ W の文字列
・ 1 番目の形式のクエリについて、1 ≦ p ≦ H
・ 2 番目の形式のクエリについて、1 ≦ q ≦ W
3 3 1
.#.
#.#
.#.
1 2
.#.
.##
.#.
3 3 1
#.#
.#.
#.#
2 1
..#
##.
#.#
7 10 10
##########
.#.#......
#.###.##..
..........
.#..##....
##########
.#..####.#
2 1
1 1
1 7
1 3
1 3
1 5
2 5
2 10
2 7
2 6
####...##.
##.###....
###.......
....#....#
#..####..#
.#########
#..####.#.