#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define FOR(i,a,b) for (int i=(a);i<(b);i++) #define RFOR(i,a,b) for (int i=(b)-1;i>=(a);i--) #define REP(i,n) for (int i=0;i<(n);i++) #define RREP(i,n) for (int i=(n)-1;i>=0;i--) #define ALL(a) (a).begin(),(a).end() using namespace std; typedef long long ll; ll N, M; ll dp[2][10010]; ll P = 1000000000; int main(int argc, char *argv[]) { cin.tie(0); ios::sync_with_stdio(false); cin >> N >> M; N /= 1000; N %= M; dp[0][0] = dp[1][0] = 1; FOR(i,1,M+1) FOR(j,1,i+1) dp[i&1][j] = (dp[(i-1)&1][j-1] + dp[(i-1)&1][j]) % P; cout << dp[M&1][N] << endl; return 0; }