#include constexpr int64_t p=1'000'000'007; constexpr int64_t k=(p+5)/2; int64_t invtbl[5001],T[5001][5001]; int main(){ invtbl[1]=1;T[1][1]=1; for (int i = 2; i < 5001; i++) { invtbl[i]=p-(invtbl[p%i]*(p/i))%p; T[i][1]=1; T[0][i]=0; } for (int n = 2; n < 5001; n++) { for (int k = 1; k < 5001; k++) { T[n][k]=(T[n-1][k-1]+T[n][k-1])*k; T[n][k]%=p; } } int64_t N,M,kCi=1,kCj,ans=0; std::cin>>N>>M; for(int64_t i=1;i<=N;i++){ kCj=1; kCi=(((kCi*(k+1-i))%p)*(invtbl[i]))%p; int64_t l=T[N][i]; for(int64_t j=1;j<=M;j++){ kCj=(((kCj*(k+1-i-j))%p)*(invtbl[j]))%p; int64_t r=T[M][j]; ans+=(((kCi*l)%p)*((kCj*r)%p)); ans%=p; } } std::cout<