C1015 [欢乐赛]飞行棋

内存限制:256 MB 时间限制:1000 ms

题目描述

JWJU的桌游协会经常在课余时间组织大家玩飞行棋游戏,来促进同学们之间的友♂谊。

飞行棋的规则如下:

1、每名玩家有一个棋子,每个回合可以掷一次骰子。

2、如果使用的骰子为 $k$ 面,则这 $k$ 面上的点数分别为 $1,2,3, \ldots, k$,且掷得每种点数的概率均为 $\frac{1}{k}$。

3、如果当前回合掷得的点数为 $Q$,则玩家控制的棋子前进 $Q$ 步。

4、若当前棋子的位置到终点的距离 $d < Q$,则棋子先行动 $d$ 步到终点,再倒退 $Q-d$ 步。(即到终点的距离变为 $Q-d$)

5、某一回合结束后,若该玩家的棋子恰好到达终点,则宣布胜利。

璇璇姐姐参与了这个游戏,已知现在她的棋子到终点的距离为 $d$,游戏使用的骰子有 $k$ 面,求璇璇获得胜利需要的回合数期望。

输入格式

输入包含两个正整数 $d$ 和 $k$,分别代表璇璇的棋子到终点的距离 $d$ 以及骰子的面数 。

保证 $1 \le k \le d \le 10^{18}, 1 \le k \le 20$。

输出

可以证明此题答案可以表示为有理数 $\frac{x}{y}$,且 $x,y$ 互质,此时需要输出 $x \times y^{-1} \bmod 1000000007$ ($1000000007 = 10^9+7$),其中 $y^{-1}$ 表示 $y$ 在模 $1000000007$ 意义下的乘法逆元,且保证在本题数据范围内,$y$ 的乘法逆元一定存在。

样例

样例输入 1

6 6

样例输出 1

6

提示