AT_jsc2026_final_g Glass Overflow

Description

$ N $ 個のグラスと、水の入った $ N $ 本のボトルがあります。 グラスとボトルには、それぞれ $ 1 $ から $ N $ までの番号が付けられています。 グラス $ i $ の容量は $ C_i $ であり、ボトル $ i $ に入っている水の量は $ W_i $ です。 $ (1,2,\ldots,N) $ の順列 $ P=(P_1,P_2,\ldots,P_N) $ を選びます。 そして、各 $ i=1,2,\ldots,N $ について、ボトル $ i $ に入っている水を全てグラス $ P_i $ に注ぎます。 このとき、溢れる水の量は $ \max(0,W_i-C_{P_i}) $ です。 溢れる水の量の総和としてありうる最大値を求めてください。 さらに、最大値を達成する順列 $ P $ の個数を $ 998244353 $ で割った余りを求めてください。 $ T $ 個のテストケースが与えられるので、それぞれについて答えを求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ T $ $ \text{case}_1 $ $ \text{case}_2 $ $ \vdots $ $ \text{case}_T $ 各テストケースは以下の形式で与えられる。 > $ N $ $ C_1 $ $ C_2 $ $ \ldots $ $ C_N $ $ W_1 $ $ W_2 $ $ \ldots $ $ W_N $

Output Format

$ T $ 行出力せよ。 $ i $ 行目には $ i $ 番目のテストケースについて、溢れる水の量の総和の最大値と、その最大値を達成する順列 $ P $ の個数を $ 998244353 $ で割った余りを、この順に空白で区切って出力せよ。

Explanation/Hint

### Sample Explanation 1 $ 1 $ つ目のテストケースについて、順列 $ (3,2,1) $ と $ (3,1,2) $ が最大値を達成します。 どちらの順列でも、溢れる水の量の総和は $ 8 $ です。 $ 2 $ つ目のテストケースについて、水は溢れません。 ### Constraints - $ 1 \le T \le 10^5 $ - $ 1 \le N \le 2 \times 10^5 $ - $ 1 \le C_i \le 10^9 $ - $ 1 \le W_i \le 10^9 $ - 全てのテストケースにおける $ N $ の総和は $ 2 \times 10^5 $ 以下 - 入力される値は全て整数