#include <algorithm> #include <cstdio> #include <iostream> #include <map> #include <cmath> #include <queue> #include <set> #include <sstream> #include <stack> #include <string> #include <vector> #include <stdlib.h> #include <stdio.h> #include <bitset> using namespace std; #define FOR(I,A,B) for(int I = (A); I < (B); ++I) vector<vector<long long> > dp(10001); int main(){ long long n, m; cin >> n >> m; n %= m * 1000; n /= 1000; dp[1].push_back(1); dp[1].push_back(1); FOR(i,1,10000){ FOR(j,0,i+2){ if(j == 0) dp[i+1].push_back(dp[i][j]); else if(j == i+1) dp[i+1].push_back(dp[i][i]); else dp[i+1].push_back(dp[i][j-1] + dp[i][j]); dp[i+1][j] %= 1000000000; } } if(n==0){ cout << 1 << endl; } else { cout << dp[m][n] << endl; } return 0; }