#z1040. 礼物分配

礼物分配

Description

作为鹈鹕镇的新成员,为了增进与居民的关系,你决定给每位居民赠 送一份精心挑选的礼物。 鹈鹕镇上共有 n 位居民,他们的编号分别是 1, 2, 3, ⋯ , n。 你准备了 n 份礼物,编号分别为 m + 1, m + 2, ⋯ , m + n,你打算将 礼物分配给居民,使得每个居民都恰好获得一个礼物。 但是,鹈鹕镇的居民对礼物有着特别的偏好:每位居民只喜欢那些编 号是自己编号倍数的礼物。 例如,编号为 i 的居民最爱的礼物编号是 i, 2i, 3i, ⋯ i。 你希望计算出有多少种不同的分配方案,可以让每位居民都能收到一 份最爱的礼物。 结果可能较大,请将结果对 109 + 7 取模。

Format

Input

一行包含两个用空格分隔的整数 n, m。

Output

一行一个答案,表示方案数,对 109 + 7取模。

Samples

样例1

5 1
3

样例1说明: 有下面三种方案: [6, 2, 3, 4, 5] [2, 6, 3, 4, 5] [3, 2, 6, 4, 5]

样例2

3 9
3

样例2说明: 有下面两种方案: [22, 20, 21] [20, 22, 21]

样例3

19 5
6

样例4

758807789 17
962746378

Limitation

对于所有测试数据,保证: 1 ≤ n ≤ 109, 1 ≤ m ≤ 20 对于 30% 的数据,保证 1 ≤ n ≤ 20 对于另外 30% 的数据,保证 m = 1

1s, 1024KiB for each test case.