atcoder#ARC114C. [ARC114C] Sequence Scores

[ARC114C] Sequence Scores

配点 : 600600

問題文

11 以上 MM 以下の整数から成る長さ NN の数列 AA に対して, f(A)f(A) を以下のように定義します.

  • 長さ NN の数列 XX があり,初め全ての要素は 00 である.f(A)f(A) を,次の操作を繰り返して XXAA に等しくするための最小の操作回数とする.- 1lrN1 \leq l \leq r \leq N1vM1 \leq v \leq M を指定する.lirl \leq i \leq r に対して XiX_imax(Xi,v)\max(X_i, v) で置き換える.
  • 1lrN1 \leq l \leq r \leq N1vM1 \leq v \leq M を指定する.lirl \leq i \leq r に対して XiX_imax(Xi,v)\max(X_i, v) で置き換える.

AA として考えられる数列は MNM^N 通りあります.これら全ての数列に対する f(A)f(A) の和を 998244353998244353 で割った余りを求めてください.

制約

  • 1N,M50001 \leq N, M \leq 5000
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる.

NN MM

出力

全ての数列に対する f(A)f(A) の和を 998244353998244353 で割った余りを出力せよ.

2 3
15

32=93 ^ 2 = 9 通りの数列と,それに対する ff の値は以下の通りです.

  • A=(1,1)A = (1, 1) のとき,(l=1,r=2,v=1)(l = 1, r = 2, v = 1) として 11 回の操作で可能なので,f(A)=1f(A) = 1 です.
  • A=(1,2)A = (1, 2) のとき,(l=1,r=2,v=1)(l = 1, r = 2, v = 1) , (l=2,r=2,v=2)(l = 2, r = 2, v = 2) として 22 回の操作で可能なので,f(A)=2f(A) = 2 です.
  • A=(1,3)A = (1, 3) のとき,(l=1,r=2,v=1)(l = 1, r = 2, v = 1) , (l=2,r=2,v=3)(l = 2, r = 2, v = 3) として 22 回の操作で可能なので,f(A)=2f(A) = 2 です.
  • A=(2,1)A = (2, 1) のとき,(l=1,r=2,v=1)(l = 1, r = 2, v = 1) , (l=1,r=1,v=2)(l = 1, r = 1, v = 2) として 22 回の操作で可能なので,f(A)=2f(A) = 2 です.
  • A=(2,2)A = (2, 2) のとき,(l=1,r=2,v=2)(l = 1, r = 2, v = 2) として 11 回の操作で可能なので,f(A)=1f(A) = 1 です.
  • A=(2,3)A = (2, 3) のとき,(l=1,r=2,v=2)(l = 1, r = 2, v = 2) , (l=2,r=2,v=3)(l = 2, r = 2, v = 3) として 22 回の操作で可能なので,f(A)=2f(A) = 2 です.
  • A=(3,1)A = (3, 1) のとき,(l=1,r=2,v=1)(l = 1, r = 2, v = 1) , (l=1,r=1,v=3)(l = 1, r = 1, v = 3) として 22 回の操作で可能なので,f(A)=2f(A) = 2 です.
  • A=(3,2)A = (3, 2) のとき,(l=1,r=2,v=2)(l = 1, r = 2, v = 2) , (l=1,r=1,v=3)(l = 1, r = 1, v = 3) として 22 回の操作で可能なので,f(A)=2f(A) = 2 です.
  • A=(3,3)A = (3, 3) のとき,(l=1,r=2,v=3)(l = 1, r = 2, v = 3) として 11 回の操作で可能なので,f(A)=1f(A) = 1 です.

これらの和は 3×1+6×2=153 \times 1 + 6 \times 2 = 15 です.

3 2
15
34 56
649717324