#include #include using namespace std; using namespace atcoder; #define rep(i,m,n,k) for (int i = (int)(m); i < (int)(n); i += (int)(k)) #define rrep(i,m,n,k) for (int i = (int)(m); i > (int)(n); i += (int)(k)) #define ll long long #define list(T,A,N) vector A(N);for(int i=0;i<(int)(N);i++){cin >> A[i];} const ll mod = 1000000000; using mint = static_modint<1000000000>; int main(){ ll N,M; cin >> N >> M; N /= 1000; N %= M; vector> C(M+1,vector(M+1,mint(0))); rep(i,0,M+1,1){ C[i][0] = mint(1); } rep(i,1,M+1,1){ rep(j,1,i+1,1){ C[i][j] = C[i-1][j-1] + C[i-1][j]; } } cout << C[M][N].val() << endl; return 0; }