#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
const int MAX = 1e6+100;
const int MAXX = 2e3+100;
int mod;
int dp[MAXX][MAXX];
int f[MAX],finv[MAX],inv[MAX];//f是阶乘,finv是逆元的阶乘
void init1(){
inv[1]=1;
for (int i = 2; i < MAX;i++){
inv[i]=(mod-mod/i)*1ll*inv[mod%i]%mod;
}
f[0]=finv[0]=1;
for (int i = 1; i < MAX;i++){
f[i]=f[i-1]*1ll*i%mod;
finv[i]=finv[i-1]*1ll*inv[i]%mod;
}
}
void init2(){//dp[n][m]就是C(n, m)
for (int i = 1; i < MAXX;i++){
dp[i][0]=dp[0][i]=1;
for (int j = 1; j <= i;j++){
dp[i][j]=(dp[i-1][j]+dp[i-1][j-1])%mod;
}
}
}
int comb(int n,int m){//comb(n, m)就是C(n, m)
if(m<0||m>n) return 0;
return f[n]*1ll*finv[n-m]%mod*finv[m]%mod;
}
int main(){
mod=1e9+7;
return 0;
}