atcoder#ABC290F. [ABC290F] Maximum Diameter

[ABC290F] Maximum Diameter

配点 : 500500

問題文

長さ NN の正整数列 X=(X1,X2,XN)X=(X_1,X_2\ldots,X_N) に対して、f(X)f(X) を以下のように定めます。

  • NN 頂点の木であって、i (1iN)i\ (1 \leq i \leq N) 番目の頂点の次数が XiX_i であるようなものを良い木と呼ぶ。 良い木が存在するならば、f(X)f(X) は良い木の直径の最大値。良い木が存在しないならば、f(X)=0f(X)=0

ただし、木の 22 頂点の間の距離は一方から他方へ移動するときに用いる辺の本数の最小値であり、 木の直径は任意の 22 頂点の間の距離の最大値として定められます。

長さ NN の正整数列 XX としてあり得るもの全てに対する f(X)f(X) の総和を 998244353998244353 で割った余りを求めてください。 なお、f(X)f(X) の総和は有限値になることが証明できます。

TT 個のテストケースが与えられるので、それぞれについて答えを求めてください。

制約

  • 1T2×1051\leq T \leq 2\times 10^5
  • 2N1062 \leq N \leq 10^6
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる。ここで、testi\mathrm{test}_iii 番目のテストケースを意味する。

TT

test1\mathrm{test}_1

test2\mathrm{test}_2

\vdots

testT\mathrm{test}_T

各テストケースは以下の形式で与えられる。

NN

出力

TT 行出力せよ。

i (1iT)i\ (1\leq i \leq T) 行目には、ii 番目のテストケースに対する答えを出力せよ。

10
2
3
5
8
13
21
34
55
89
144
1
6
110
8052
9758476
421903645
377386885
881422708
120024839
351256142

N=3N=3 の場合について、

例えば、

  • X=(1,1,1)X=(1,1,1) のとき、次数が 1,1,11,1,1 となる 33 頂点の木は存在しないため、f(X)=0f(X)=0 です。
  • X=(2,1,1)X=(2,1,1) のとき、良い木は以下の図のものに限られます。この木の直径は 22 であるため、f(X)=2f(X)=2 です。

3 頂点の木

X=(2,1,1),(1,2,1),(1,1,2)X=(2,1,1),(1,2,1),(1,1,2) のとき f(X)=2f(X)=2 であり、それ以外の XX のとき f(X)=0f(X)=0 であるため、答えは 66 です。