#include<stdio.h>
using lld = long long int;
// solution from https://h...content-available-to-author-only...n.hr/studenti2020/
// See https://e...content-available-to-author-only...a.org/wiki/Fuss%E2%80%93Catalan_number
constexpr lld M = 1'000'000'007;
int n,m;
lld expp(lld p,lld q){
lld r=1;
lld z=p;
while(q){
if(q&1)r=r*z%M;
z=z*z%M;
q>>=1;
}
return r;
}
int main(){
scanf("%d%d",&n,&m);
// nm C n / (nm-n+1)
lld p=(lld)n*m;
lld r=1;
lld f=n;
for(int i=1;i<n;i++){
r=r*(p--)%M;
f=f*i%M;
}
r=r*expp(f,M-2)%M;
printf("%lld",r);
}
I2luY2x1ZGU8c3RkaW8uaD4KdXNpbmcgbGxkID0gbG9uZyBsb25nIGludDsKLy8gc29sdXRpb24gZnJvbSBodHRwczovL2guLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLm4uaHIvc3R1ZGVudGkyMDIwLwovLyBTZWUgaHR0cHM6Ly9lLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5hLm9yZy93aWtpL0Z1c3MlRTIlODAlOTNDYXRhbGFuX251bWJlcgoKY29uc3RleHByIGxsZCBNID0gMScwMDAnMDAwJzAwNzsKaW50IG4sbTsKbGxkIGV4cHAobGxkIHAsbGxkIHEpewogICAgbGxkIHI9MTsKICAgIGxsZCB6PXA7CiAgICB3aGlsZShxKXsKICAgICAgICBpZihxJjEpcj1yKnolTTsKICAgICAgICB6PXoqeiVNOwogICAgICAgIHE+Pj0xOwogICAgfQogICAgcmV0dXJuIHI7Cn0KaW50IG1haW4oKXsKICAgIHNjYW5mKCIlZCVkIiwmbiwmbSk7CiAgICAvLyBubSBDIG4gLyAobm0tbisxKQogICAgbGxkIHA9KGxsZCluKm07CiAgICBsbGQgcj0xOwogICAgbGxkIGY9bjsKICAgIGZvcihpbnQgaT0xO2k8bjtpKyspewogICAgICAgIHI9cioocC0tKSVNOwogICAgICAgIGY9ZippJU07CiAgICB9CiAgICByPXIqZXhwcChmLE0tMiklTTsKICAgIHByaW50ZigiJWxsZCIscik7Cn0=