問題文
銀行に人 1, 人 2, dots, 人 N が並んでいます。
Q 個のイベントが発生します。イベントは次の 3 種類のいずれかです。
1
: 受付に呼ばれていない人のうち、最も小さい番号の人が受付に呼ばれる。
2 x
: 人 x が初めて受付に行く。(ここで、人 x はすでに 1 回以上受付に呼ばれている。)
3
: すでに受付に呼ばれているが受付に行っていない人のうち、最も小さい番号の人が再度呼ばれる。
3 種類目のイベントで受付に呼ばれる人の番号を呼ばれた順に出力してください。
制約
- 1leqNleq5times105
- 2leqQleq5times105
- 全ての人が 1 回以上呼ばれているときに 1 種類目のイベントが発生することはない
- 2 種類目のイベントについて、人 x はすでに 1 回以上受付に呼ばれている
- 2 種類目のイベントについて、人 x が 2 回以上受付に行くことはない
- 呼ばれている人が全員すでに受付に行っているときに 3 種類目のイベントが発生することはない
- 3 種類目のイベントは少なくとも 1 回発生する
- 入力される値はすべて整数
入力
入力は以下の形式で標準入力から与えられる。ここで texteventi は i 番目のイベントを意味する。
N Q
textevent1
textevent2
vdots
texteventQ
イベントは次の 3 つのいずれかの形式で入力される。
1
```2 $x$
```plain
3
出力
入力で与えられる 3 種類目のイベントの個数を X として、X 行出力せよ。
i 行目には、3 種類目のイベントのうち i 番目のもので呼ばれた人の番号を出力せよ。
入力例 1
4 10
1
1
3
2 1
1
2 3
3
1
2 2
3
出力例 1
1
2
4
i=1,2,dots,Q について、i 番目のイベントが起こる前の時点での、受付に呼ばれたが受付に行っていない人の集合を列挙すると次のようになります。
- i=1 : lbracerbrace
- i=2 : lbrace1rbrace
- i=3 : lbrace1,2rbrace
- i=4 : lbrace1,2rbrace
- i=5 : lbrace2rbrace
- i=6 : lbrace2,3rbrace
- i=7 : lbrace2rbrace
- i=8 : lbrace2rbrace
- i=9 : lbrace2,4rbrace
- i=10 : lbrace4rbrace
3 種類目のイベントは i=3,7,10 のときに発生しているので、その時点での集合のうち番号が最小の人である 1,2,4 を出力します。