[SDOI2011]黑白棋
题号:NC20350
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小A和小B又想到了一个新的游戏。 
这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色。 
最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同。 小A可以移动白色棋子,小B可以移动黑色的棋子,他们每次操作可以移动1到d个棋子。 
每当移动某一个棋子时,这个棋子不能跨越两边的棋子,当然也不可以出界。当谁不可以操作时,谁就失败了。 
小A和小B轮流操作,现在小A先移动,有多少种初始棋子的布局会使他胜利呢?

输入描述:

共一行,三个数,n,k,d。

输出描述:

输出小A胜利的方案总数。
答案对1000000007取模。
示例1

输入

复制
10 4 2

输出

复制
182

备注:

对于30%的数据,有
对于100%的数据,有 ,k为偶数,