编程题
### 问题描述
在宇宙的深处,有一颗神秘的星球,名为“双生星”。这个星球上生活着两个不同的种族,分别是“上升族”和“下降族”。它们虽然生活在同一个星球上,但却按照不同的生活方式。
上升族的人们喜欢按照数字的升序排列物品,他们认为这样可以让生活更加有序和美好。
而下降族的人们则喜欢按照数字的降序排列物品,他们认为这样可以让生活更加有质感和深度。
这两个种族虽然有着不同的生活方式,但是他们却有一个共同的梦想——探索双生星的秘密。
于是,他们决定联合起来,进行一次探险。在探险的过程中,他们需要构造一个神秘的数对,这个数对由两个数组 $A$ 和 $B$ 组成,其中 $A$ 数组不降序,$B$ 数组不升序,且对于数组中的任一位置 $i$ 都有 $a_i < b_i$。
他们需要你的帮助计算出一共有多少种方法可以构造这样的数对。他们将给你两个数字 $N$ 和 $M$,其中 $N$ 表示你可以使用的数字范围是 $[1,N]$,$M$ 表示数组的长度。
请你帮助他们完成这次奇妙的探险吧!由于答案很大,请对 $10^9 + 7$ 取模输出。
### 输入格式
输入一行包含两个整数 $N$ 和 $M$($1\leq N \leq 10^3$,$1\leq M \leq 10$),表示数字的范围和数组的长度。
### 输出格式
输出一个整数,表示可以构造的数对的数量。由于答案很大,请对 $10^9 + 7$ 取模输出。
### 样例输入
```
4 3
```
### 样例输出
```
84
```