#ACSPJ2024D. 计数

计数

问题描述

小可可做了一个梦,梦里从左到右有 nn 个糖果,每种糖果有一个在 [1,m][1, m] 之间的颜 色。

小可可每次会选择两个颜色相同的糖果,把它们以及它们之间的所有糖果吃掉。小 可可记得对于梦里的糖果序列,存在一种方法把所有糖果吃完。

小可可醒来后忘记了梦中的糖果序列是什么,你能帮她求求在所有 mnm^n 个可能的糖 果序列中,有多少个糖果序列可能在小可可梦中(存在一种全部吃完的方式)吗?

由于结果很大,你只要求出它除以 109+710^9 + 7 得到的余数即可。

输入

一行两个正整数 nnmm,含义与题面中相同。

输出

一行一个正整数,表示答案除以 109+710^9 + 7 得到的余数。

样例 1

3 2
4

样例 1 解释

44 个合法的糖果序列:[1,1,1][1, 1, 1][1,2,1][1, 2, 1][2,1,2][2, 1, 2][2,2,2][2, 2, 2]

约定和数据范围

对于 10%10\% 的数据,1n61 ≤ n ≤ 61m41 ≤ m ≤ 4

对于 20%20\% 的数据,1n61 ≤ n ≤ 61m10001 ≤ m ≤ 1000

对于另 30%30\% 的数据,1n501 ≤ n ≤ 501m21 ≤ m ≤ 2

对于 70%70\% 的数据,1n1001 ≤ n ≤ 1001m1001 ≤ m ≤ 100

对于 80%80\% 的数据,1n10001 ≤ n ≤ 10001m10001 ≤ m ≤ 1000

对于 100%100\% 的数据,1n30001 ≤ n ≤ 30001m1091 ≤ m ≤ 10^9

d_1.in  d_1.out

d_2.in  d_2.out

d_3.in  d_3.out

d_4.in  d_4.out