#754. 方格填数

方格填数

无额外样例。

题目描述

有一个 nnmm 列的网格图。

初始时,每个格子都是空的。

现在要往格子里填数。

每个格子只能填一个数,不能不填。

假设第 ii 行第 jj 列的格子填写的数为 Ai,jA_{i,j}

要求:

(1)填写的数必须为不超过 mm 的非负整数。即:0Ai,jm0 ≤ A_{i,j} ≤ m 1in,1jm(1 ≤ i ≤ n,1 ≤ j ≤ m)

(2)对于同一行的数,前面的数必须小于后面的数。即:Ai,j<Ai,j+1A_{i,j} < A_{i,j+1} 1in,1j<m(1 ≤ i ≤ n, 1 ≤ j < m)

(3)对于任意一个数,必须小于它右上方相邻的数。即: Ai,j<Ai1,j+1A_{i,j} < A_{i-1,j+1} 1<in,1j<m(1 < i ≤ n, 1 ≤ j < m)

问:有多少种填数方案?答案可能很大,你需要输出答案 mod 109+710^9+7

注:两种方案不同,当且仅当存在一个格子,在两种方案中填写的数不同。

输入格式

一行,包含两个整数表示 n,mn, m

输出格式

一行,包含一个整数,表示方案数 mod 109+710^9+7

样例1输入

2 2

样例1输出

8

样例2输入

123456 987654

样例2输出

292753376

说明/提示

100%100\% 的数据:1n,m1061 ≤ n, m ≤ 10^6