问题描述
对于长度为N,由介于1和M(含)之间的整数组成的序列A,我们定义f(A)如下:
- 我们有一个长度为N的序列X,初始情况下每个元素均为0。通过重复执行以下操作来使X等于A,f(A)为所需的最小操作次数:
- 指定1≤l≤r≤N和1≤v≤M,然后对于每个l≤i≤r,将Xi替换为max(Xi,v)。
求所有可能的MN个序列A的f(A)之和,模998244353。
约束条件
- 1≤N,M≤5000
- 输入中的所有值均为整数。
输入
输入以以下格式从标准输入给出:
N M
输出
打印所有序列A的f(A)之和,模998244353。
示例输入1
2 3
示例输出1
15
有32=9个序列,以及它们的f值:
- 对于A=(1,1),我们可以通过一次操作(l=1,r=2,v=1)使X等于它,因此f(A)=1。
- 对于A=(1,2),我们可以通过两次操作(l=1,r=2,v=1)和(l=2,r=2,v=2)使X等于它,因此f(A)=2。
- 对于A=(1,3),我们可以通过两次操作(l=1,r=2,v=1)和(l=2,r=2,v=3)使X等于它,因此f(A)=2。
- 对于A=(2,1),我们可以通过两次操作(l=1,r=2,v=1)和(l=1,r=1,v=2)使X等于它,因此f(A)=2。
- 对于A=(2,2),我们可以通过一次操作(l=1,r=2,v=2)使X等于它,因此f(A)=1。
- 对于A=(2,3),我们可以通过两次操作(l=1,r=2,v=2)和(l=2,r=2,v=3)使X等于它,因此f(A)=2。
- 对于A=(3,1),我们可以通过两次操作(l=1,r=2,v=1)和(l=1,r=1,v=3)使X等于它,因此f(A)=2。
- 对于A=(3,2),我们可以通过两次操作(l=1,r=2,v=2)和(l=1,r=1,v=3)使X等于它,因此f(A)=2。
- 对于A=(3,3),我们可以通过一次操作(l=1,r=2,v=3)使X等于它,因此f(A)=1。
这些值的总和为3×1+6×2=15.
示例输入2
3 2
示例输出2
15
示例输入3
34 56
示例输出3
649717324