AT_tupc2024_i Small Steps

Description

頂点に $ 1 $ から $ n $ までの番号がついた $ n $ 頂点の木 $ t $ に対し、以下の条件を満たす $ (1, \dots, n) $ の順列 $ p = (p_1, \dots, p_n) $ の個数を $ f(t) $ とおきます。 - $ i = 1, \dots, n $ に対し、頂点 $ p_i $ と頂点 $ p_{i + 1} $ を結ぶ単純パスに含まれる辺が $ 2 $ 本以下 (ただし、 $ p_{n + 1} = p_1 $ とする) --- 正整数 $ N, K $ 、および頂点に $ 1 $ から $ N $ までの番号がついた $ N $ 頂点の木 $ T_0 $ が与えられます。 $ T_0 $ の $ i $ 番目の辺は頂点 $ A_i $ と頂点 $ B_i $ を結びます。 $ T_0 $ を $ K $ 個つなげて得られる木を **良い木** と呼びます。 より形式的には、頂点に $ 1 $ から $ NK $ までの番号がついた $ NK $ 頂点の木 $ T $ が以下の条件を満たすとき、またそのときに限り $ T $ を良い木であるとします。 - $ 1\le i\le N - 1 $ かつ $ 0\le k\le K - 1 $ を満たすすべての整数の組 $ (i, k) $ に対し、頂点 $ (A_i + N\times k) $ と頂点 $ (B_i + N\times k) $ の間に辺が存在する すべての良い木 $ T $ に対する $ f(T) $ の総和を $ 998244353 $ で割った余りを求めてください。 $ Q $ 個のテストケースが与えられるので、それぞれについて答えを求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ Q $ $ \mathrm{case}_1 $ $ \vdots $ $ \mathrm{case}_Q $ $ \mathrm{case}_i $ は以下の形式である。 > $ N $ $ K $ $ A_1 $ $ B_1 $ $ \vdots $ $ A_{N - 1} $ $ B_{N - 1} $

Output Format

$ Q $ 行出力せよ。 $ i $ 行目には $ \mathrm{case}_i $ に対する答えを出力せよ。

Explanation/Hint

### Sample Explanation 1 $ 1 $ つ目のテストケースについて、どの単純パスも $ 2 $ 本以下の辺しか含まないため、ありうる順列が全て数えられます。 $ 2 $ つ目のテストケースについて、数える順列は $ (1, 2, 4, 3), $ $ (1, 3, 4, 2), $ $ (2, 1, 3, 4), $ $ (2, 4, 3, 1), $ $ (3, 1, 2, 4), $ $ (3, 4, 2, 1), $ $ (4, 2, 1, 3), $ $ (4, 3, 1, 2) $ の $ 8 $ 通りです。 $ 3 $ つ目のテストケースについて、すべての $ 4 $ 頂点の木 $ T $ に対する $ f(T) $ の総和を求める必要があります。 $ T_0 $ が辺を持たない場合があることに注意してください。 $ 4 $ つ目のテストケースについて、良い木として例えば以下のような木が挙げられます。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_tupc2024_i/8201f85794558eea0df8d3b867cf633868cfd5635e76b8793329aa65a255eb76.png) ### Constraints - $ 1\le Q\le 2\times 10 ^ 5 $ - $ 1\le N\le 2\times 10 ^ 5 $ - $ 1\le K\le 2\times 10 ^ 5 $ - $ 1\le A_i\lt B_i\le N $ - $ 1 $ つの入力ファイルに含まれる $ N $ の総和は $ 2\times 10 ^ 5 $ 以下 - 入力されるグラフは木 - 入力はすべて整数