#P16376. [2024年南京集训]上低音号

[2024年南京集训]上低音号

题目描述

Kumiko 喜欢序列。

给定两个正整数 N,KN,K。她认为一个序列是好序列,当且仅当它满足以下条件:

  1. 序列长度恰好为 NN
  2. 序列中的每个数都是 [1,N][1,N] 内的整数;
  3. 每一种数字的出现次数均不超过 KK

对于一个序列 SS,Kumiko 可以进行如下变换:

选择两个 [1,N][1,N] 内的整数 x,yx,y,先交换 SxS_xSyS_y 的值,然后将序列中所有原来等于 xx 的值变为 yy,所有原来等于 yy 的值变为 xx

容易发现,一个好序列经过变换后仍然是好序列。

Kumiko 想要收集所有好序列,但她还要带领吹奏部冲击全国金。因此她退而求其次,打算只收集一些好序列,使得任意一个好序列,都可以由她手中的某个好序列经过若干次上述变换得到。

请你求出 Kumiko 至少需要收集多少个好序列。

答案对

109+710^9+7

取模。

输入格式

输入一行两个整数 N,KN,K,分别表示序列长度和每种数字的出现次数上限。

输出格式

输出一行一个整数,表示 Kumiko 至少需要收集的好序列数量,对 109+710^9+7 取模。

样例

输入

3 2

输出

6

样例解释

Kumiko 可以收集以下 66 个序列:

$$\{1,1,2\},\ \{1,1,3\},\ \{1,2,3\},\ \{1,3,2\},\ \{2,1,1\},\ \{2,3,1\}.$$

例如,好序列 {2,3,2}\{2,3,2\} 可以由她手中的好序列 {2,1,1}\{2,1,1\} 经过两次变换得到:

  1. x=1,y=2x=1,y=2,交换 Sx,SyS_x,S_y,得到 {1,2,1}\{1,2,1\};再将原来等于 11 的值变成 22,原来等于 22 的值变成 11,得到 {2,1,2}\{2,1,2\}
  2. x=1,y=3x=1,y=3,交换 Sx,SyS_x,S_y,序列仍为 {2,1,2}\{2,1,2\};再将原来等于 11 的值变成 33,原来等于 33 的值变成 11,得到 {2,3,2}\{2,3,2\}

序列 {2,2,2}\{2,2,2\} 虽然不能由她手中的序列变换而来,但数字 22 的出现次数超过了 KK,因此它不是好序列,无需考虑。

可以证明,任意好序列都可以由上述某个序列经过若干次变换得到,并且不存在收集数量更少的合法方案。

数据范围

对于全部测试数据:

1KN250.1\le K\le N\le 250.

本题共 2020 个测试点,每个测试点 55 分。

  • 44 个测试点满足 N8N\le 8

  • 5,65,6 个测试点满足 N11N\le 11N=KN=K

  • 对于后 1414 个测试点,第 xx 个测试点满足

    N25018(20x).N\le 250-18(20-x).
  • 8,10,12,148,10,12,14 个测试点满足 K=1K=1