#include <iostream>
using namespace std;
int DFS_FindNext(int arr[], int nMaxElm, int nDepth)
{
int n = nDepth - 1;
for (++arr[n]; n >= 0 && arr[n] >= nMaxElm; ++arr[--n]);
if (n<0)
return 0;
for (int t = n + 1; t<nDepth; ++t)
arr[t] = arr[n];
return 1;
};
int main()
{
int n, m;
long cnt = 0;
while (cin>>m>>n)
{
cnt = 0;
int arr[20000] = {0};
do
{
cnt++;
} while (DFS_FindNext(arr, m, n));
cout << cnt%1000000007 << endl;
}
return 0;
}
0% 有什么问题吗