AT_past18_i 改行コード

Description

右下方向に無限に広がるグリッド状のテキストエディタがあります。テキストエディタの上から $ i $ 行目、左から $ j $ 列目のマスを $ (i, j) $ と呼びます。各マスは文字が書かれている状態か何も書かれていない状態のいずれかです。初期状態ではどのマスにも文字は書かれていません。 また、文字の入力位置を示す **カーソル** と呼ばれるマークがあります。カーソルははじめ $ (1, 1) $ にあります。 あなたは $ Q $ 個のクエリを与えられた順に処理します。 クエリは次の $ 3 $ 種類のいずれかです。 - $ 1 $ $ c $ : カーソルのあるマスに文字 $ c $ を挿入する。厳密に説明すると、次の一連の操作を行う。 - まず、現在カーソルのあるマスに書かれている文字および同じ行内でそのマスより右にある文字が存在すれば、それらを全て同時に右に $ 1 $ マス動かす。 - 次に、現在カーソルのあるマスに文字 $ c $ を書きこむ。 - 最後に、カーソルを右に $ 1 $ マス動かす。 - $ 2 $ : カーソルを今いる行の左端に動かす。 - $ 3 $ : カーソルを今いる $ 1 $ つ下の行の左端に動かす。 クエリを全て処理した後のテキストエディタの状態を出力してください。

Input Format

入力は以下の形式で標準入力から与えられる。ここで $ \mathrm{query}_i $ は $ i $ 番目のクエリを意味する。 > $ Q $ $ \mathrm{query}_1 $ $ \mathrm{query}_2 $ $ \vdots $ $ \mathrm{query}_Q $

Output Format

- クエリを全て処理した時点でのカーソルのあるマスを $ (H, W) $ - 上から $ i $ 行目に書かれている文字の個数を $ C_i $ - マス $ (i, j) $ に書かれている文字を $ S_{i, j} $ として、以下の形式で $ H + 1 $ 行出力せよ。( $ C_i = 0 $ である行が存在する可能性があることに注意せよ。) $ 2 $ 行目以降は行頭に `#` および半角スペースを付ける必要がある点に注意せよ。 > $ H $ $ W $ \# $ S_{1, 1}S_{1, 2} \dots S_{1, C_1} $ \# $ S_{2, 1}S_{2, 2} \dots S_{2, C_2} $ $ \vdots $ \# $ S_{H, 1}S_{H, 2} \dots S_{H, C_H} $

Explanation/Hint

### Sample Explanation 1 クエリを処理する手順を説明すると次のようになります。 - $ 1 $ 番目のクエリでは、 $ (1, 1) $ に `b` を書きこみカーソルを $ (1, 2) $ に動かします。 - $ 2 $ 番目のクエリでは、 $ (1, 2) $ に `c` を書きこみカーソルを $ (1, 3) $ に動かします。 - $ 3 $ 番目のクエリでは、 $ (1, 3) $ に `d` を書きこみカーソルを $ (1, 4) $ に動かします。 - $ 4 $ 番目のクエリでは、 $ (1, 1) $ にカーソルを動かします。 - $ 5 $ 番目のクエリでは、はじめに $ (1, 1) $ に書かれた `b` と $ (1, 2) $ に書かれた `c` と $ (1, 3) $ に書かれた `d` を全て同時に右に $ 1 $ マス動かします。そして、 $ (1, 1) $ に `a` を書きこみカーソルを $ (1, 2) $ に動かします。 - $ 6 $ 番目のクエリでは、 $ (2, 1) $ にカーソルを動かします。 - $ 7 $ 番目のクエリでは、 $ (3, 1) $ にカーソルを動かします。 - $ 8 $ 番目のクエリでは、 $ (3, 1) $ に `e` を書きこみカーソルを $ (3, 2) $ に動かします。 ![image](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_past18_i/35df8cbbb113f9bcfaefee4148a6e3016bccdc7cb6cc330b9c5363d5e286c469.gif) ### Constraints - $ 1 \leq Q \leq 1.5 \times 10^6 $ - $ c $ は英小文字