AT_aalc001_k 多重集合
Description
整数の多重集合 $ S $ があります。はじめ、 $ S $ は $ N $ 個の要素 $ A_1,A_2,\ldots,A_N $ をもっています。
クエリを $ Q $ 個処理してください。クエリは以下の $ 3 $ 種類のいずれかです。
- `1 x`: $ S $ に $ x $ を $ 1 $ 個追加する。
- `2 x`: $ S $ から $ x $ を $ 1 $ 個削除する。このクエリを処理する直前の $ S $ には、 $ x $ が $ 1 $ 個以上含まれることが保証される。
- `3`: $ S $ の要素を重複を含めて昇順に並べた列を $ x_1,x_2,\ldots,x_k $ とする。このとき、 $ \displaystyle \sum_{i=1}^{k} i x_i $ を $ 998244353 $ で割った余りを出力する。
$ S $ が空であるときは $ k=0 $ であり、上記の和を $ 0 $ とします。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ Q $ $ A_1 $ $ A_2 $ $ \ldots $ $ A_N $ $ \mathrm{query}_1 $ $ \mathrm{query}_2 $ $ \vdots $ $ \mathrm{query}_Q $
各クエリは以下のいずれかの形式で与えられる。
> $ 1 $ $ x $
> $ 2 $ $ x $
> $ 3 $
Output Format
$ 3 $ 種類目のクエリの個数を $ q $ として、 $ q $ 行出力せよ。 $ j $ 行目には、 $ j $ 番目の $ 3 $ 種類目のクエリに対する答えを出力せよ。
Explanation/Hint
### Sample Explanation 1
はじめの $ S $ の要素を昇順に並べると $ (1,2,3,3) $ なので、最初のクエリでは $ 1 \times 1+2 \times 2+3 \times 3+4 \times 3=26 $ を出力します。
### Sample Explanation 2
$ 3 $ 番目のクエリでは、その時点では $ S $ は空なので、 $ 0 $ を出力します。
### Constraints
- $ 1 \leq N \leq 2 \times 10^5 $
- $ 1 \leq Q \leq 2 \times 10^5 $
- $ 0 \leq A_i \leq 10^9 $
- $ 1 $ 種類目および $ 2 $ 種類目のクエリについて、 $ 0 \leq x \leq 10^9 $
- $ 2 $ 種類目のクエリを処理する直前の $ S $ には、 $ x $ が $ 1 $ 個以上含まれる
- 入力される数値はすべて整数