编程题
### 问题描述
小齐手上有一块长度为 $N$ 单位的画布,她打算进行涂鸦。然而,她无法找到画笔。相反,她有 $M$ 种不同颜色的橡皮图章,每种图章宽度为 $K$ 单位。对于这些看似无限的可能性,她想知道在画布上以某种顺序盖印这些图章,她到底能创作出多少不同的画作。
为了使用图章,它必须首先与画布上的 $K$ 个相邻单位对齐。图章不能超出画布的两端,也不能覆盖单位的一部分。一旦放置,图章就会用它的颜色涂抹这 $K$ 个覆盖的单位。每个图章可以被多次使用,一次使用或者根本不使用。但当小齐完成时,每个画布单位必须至少被涂抹一次。
帮助小齐找出她可以绘制的不同画作的数量,取模 $10^9+7$。两幅外观相同但由不同的盖印顺序绘制的画作被视为相同。
### 输入格式
第一行是三个整数 $N, M, K$。保证 $K \leq N$。
### 输出格式
一个整数:可能的画作数量,取模 $10^9+7$。
### 样例输入
```
3 2 2
```
### 样例输出
```
6
```
### 评测数据规模
$1 \leq N \leq 10^6$,$1 \leq K \leq 10^6$,$1 \leq M \leq 10^6$。