#include #include using namespace std; typedef long long ll; struct Combination{ int n; vector> dp; Combination(int i){ n = i; dp = vector>(n+1, vector(n+1, 0)); constructTriangle(); } void constructTriangle(){ dp[0][0] = 1; for(int i = 1; i <= n; i++){ for(int j = 0; j <= n; j++){ dp[i][j] = dp[i-1][j]; if(j) dp[i][j] += dp[i-1][j-1]; } } } // return aCb ll getCombination(int a, int b){ return dp[a][b]; } }; int main(){ ll n, m; cin >> n >> m; n /= 1000; Combination c(m); cout << c.getCombination(m, n%m) % 1000000000 << endl; return 0; }