#include <stdio.h> int g(int n,int m) { int dp[n+1][m+1]; //动态规划:将子解存储起来,避免重复计算 for(int i=0;i<=n;i++) { for(int j=0;j<=m;j++) { if(i==1&&j==1) dp[i][j]=1; else if(i>=2&&j==1) dp[i][j]=dp[i-1][j]; else if(i==1&&j>=2) dp[i][j]=dp[i][j-1]; else{ dp[i][j]=(dp[i-1][j]+dp[i][j-1])%1000000007; } } } return dp[n][m]; } int main() { int m,n; scanf("%d%d",&n,&m); int k=g(n,m); printf("%d",k); return 0; }