問題

スペード,クローバー,ダイヤ,ハートのカードがそれぞれNN枚ずつあり,それぞれのマークについて,11~NNの番号のカードが1枚ずつある.例えば,スペードの11,クローバーの11,ダイヤの11,ハートの11はそれぞれS1S1C1C1D1D1H1H1で表され,最初,カードは,S1,...,SN,C1,...CN,D1,...,DN,H1,...,HNS1,...,SN,C1,...CN,D1,...,DN,H1,...,HNの順番で並んでいる. これに対して,QQ個のクエリに従ってシャッフルを行う.具体的には,i(1iQ)i (1 \leq i \leq Q)番目のクエリでは次の操作をしなければならない.

  • Li,RiL_i,R_iが与えられる.カードLiL_iからカードRiR_iまでの全てのカードを順番を保ったまま先頭に持っていく.つまり,カードの順列{a1,a2,...,a4N}\{a_1,a_2,...,a_{4N}\}においてLi=aj,Ri=ak(1jk4N)L_i=a_j,R_i=a_k (1 \leq j \leq k \leq 4N) であるとき,順列{a1,,aj1,aj,,ak,ak+1...,a4N}\{a_1,…,a_{j-1},a_j,…,a_k,a_{k+1}...,a_{4N}\}{aj,,ak,a1,,aj1,ak+1,...a4N}\{a_j,…,a_k,a_1,…,a_{j−1},a_{k+1},...a_{4N}\}に変更する.LiL_iRiR_iが等しい場合は,該当する1枚を先頭に持っていく.なお,LiL_iの位置がRiR_iの位置より右にあるようなケースは与えられない.

QQ個のクエリを順に処理した後のカードの順列における,全てのスペードのカードのみからなる部分列,全てのクローバーのカードのみからなる部分列,全てのダイヤのカードのみからなる部分列,全てのハートのカードのみからなる部分列をそれぞれこの順で出力せよ.

部分列とは,ある順列から任意数の項を抜き出した上で,"順番を保ったまま"それらを並べてできる順列のことである.

制約

  • 1N1051 \leq N \leq {10}^5
  • 1Q1051 \leq Q \leq {10}^5

入力

N QN\ Q

Li Ri(1iQ)L_i\ R_i(1 \leq i \leq Q)はそれぞれ"S"または"C"または"D"または"H"の1文字と,数字j(1jN)j (1 \leq j \leq N)を並べてできる4N4N種類の文字列

出力

スペードのカードのみからなる部分列,クローバーのカードのみからなる部分列,ダイヤのカードのみからなる部分列,ハートのカードのみからなる部分列をそれぞれこの順で4行で出力せよ.

サンプル

入力例1

1 2
C1 D1
D1 S1

出力例1

S1
C1
D1
H1

初期状態は,{S1,C1,D1,H1}\{S1, C1, D1, H1\}. 1つ目のクエリにより,C1C1D1D1が先頭に行くので,{C1,D1,S1,H1}\{C1, D1, S1, H1\}になる. 2つ目のクエリにより,D1D1S1S1が先頭に行くので,{D1,S1,C1,H1}\{D1, S1, C1, H1\}になる. N=1N=1の場合,どのように並び替えてもそれぞれ1枚ずつしかないので,出力結果は自明です.

入力例2

3 2
C2 D1
S3 H3

出力例2

S3 S1 S2
C1 C2 C3
D2 D3 D1
H1 H2 H3

初期状態は,{S1,S2,S3,C1,C2,C3,D1,D2,D3,H1,H2,H3}\{S1, S2, S3, C1, C2, C3, D1, D2, D3, H1, H2, H3\}. 1つ目のクエリにより,C2C2D1D1が先頭に行くので,{C2,C3,D1,S1,S2,S3,C1,D2,D3,H1,H2,H3}\{C2, C3, D1, S1, S2, S3, C1, D2, D3, H1, H2, H3\}になる. 2つ目のクエリにより,S3S3H3H3が先頭に行くので,{S3,C1,D2,D3,H1,H2,H3,C2,C3,D1,S1,S2}\{S3, C1, D2, D3, H1, H2, H3, C2, C3, D1, S1, S2\}になる. それぞれのマークのみからなる部分列は,スペードが{S3,S1,S2}\{S3,S1,S2\},クローバーが{C1,C2,C3}\{C1,C2,C3\},ダイヤが{D2,D3,D1}\{D2,D3,D1\},ハートが{H1,H2,H3}\{H1,H2,H3\}となる.

入力例3

2 1
C2 C2

出力例3

S1 S2
C2 C1
D1 D2
H1 H2

LiL_iRiR_iが等しい場合もあります.その場合は,その1枚を先頭に持っていきます.

提出


Go (1.21)