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 $ 個以上含まれる - 入力される数値はすべて整数