#abc253c. [abc253_c]Max - Min Query

[abc253_c]Max - Min Query

問題文

整数の多重集合 SS があります。はじめ SS は空です。

QQ 個のクエリが与えられるので順に処理してください。 クエリは次の 33 種類のいずれかです。

  • 1 x : SSxx11 個追加する。

  • 2 x c : SS から xxmathrmmin(c,\\mathrm{min}(c, (S(S に含まれる xx の個数 )))) 個削除する。

  • 3 : (S(S の最大値 ))- (S(S の最小値 )) を出力する。このクエリを処理するとき、 SS が空でないことが保証される。

制約

  • 1leqQleq2times1051 \\leq Q \\leq 2\\times 10^5
  • 0leqxleq1090 \\leq x \\leq 10^9
  • 1leqcleqQ1 \\leq c \\leq Q
  • 3 のクエリを処理するとき、SS は空でない。
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる。

QQ mathrmquery1\\mathrm{query}_1 vdots\\vdots mathrmqueryQ\\mathrm{query}_Q

ii 番目のクエリを表す mathrmqueryi\\mathrm{query}_i は以下の 33 種類のいずれかである。

11 xx 22 xx cc 33

出力

3 のクエリに対する答えを順に改行区切りで出力せよ。


入力例 1

8
1 3
1 2
3
1 2
1 7
3
2 2 3
3

出力例 1

1
5
4

多重集合 SS は以下のように変化します。

  • 11 番目のクエリ : SS33 を追加する。SSlbrace3rbrace\\lbrace3 \\rbrace となる。
  • 22 番目のクエリ : SS22 を追加する。SSlbrace2,3rbrace\\lbrace2, 3\\rbrace となる。
  • 33 番目のクエリ : S=lbrace2,3rbraceS = \\lbrace 2, 3\\rbrace の最大値は 33 、最小値は 22 なので、 32=13-2=1 を出力する。
  • 44 番目のクエリ : SS22 を追加する。SSlbrace2,2,3rbrace\\lbrace2,2,3 \\rbrace となる。
  • 55 番目のクエリ : SS77 を追加する。SSlbrace2,2,3,7rbrace\\lbrace2, 2,3, 7\\rbrace となる。
  • 66 番目のクエリ : S=lbrace2,2,3,7rbraceS = \\lbrace2,2,3, 7\\rbrace の最大値は 77 、最小値は 22 なので、 72=57-2=5 を出力する。
  • 77 番目のクエリ : SS に含まれる 22 の個数は 22 個なので、 mathrmmin(2,3)=2\\mathrm{min(2,3)} = 2 個の 22SS から削除する。SSlbrace3,7rbrace\\lbrace3, 7\\rbrace となる。
  • 88 番目のクエリ : S=lbrace3,7rbraceS = \\lbrace3, 7\\rbrace の最大値は 77 、最小値は 33 なので、 73=47-3=4 を出力する。

入力例 2

4
1 10000
1 1000
2 100 3
1 10

出力例 2

クエリ 33 が含まれない場合、何も出力してはいけません。