//#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; //#define int long long #define rep(i,s,n) for(int i = s;i=(s);i--) #define all(v) (v).begin(),(v).end() #define pb push_back #define fi first #define se second #define chmin(a,b) a=min((a),(b)) #define chmax(a,b) a=max((a),(b)) //typedef long long ll; typedef long ll; typedef pairpint; typedef vectorvint; typedef vectorvpint; typedef pair P1; typedef pair P2; typedef pair PP; static const ll maxLL = (ll)1 << 62; //const ll MOD = 1000000007; const ll MOD = 1000000000; const ll INF = 1e18; int ca[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; ll a[10001][10001]; int func(ll nn, ll mm) { ll i, j, m = 1e9; ll n; for (i = 0; i <= 1e4; i++)for (j = 0; j <= i; j++) { if (j == 0)a[i][j] = 1; else a[i][j] = (a[i - 1][j] + a[i - 1][j - 1]) % m; //j==iのときa[i-1][j]は0 } cout << a[nn][mm] << endl; return 0; } int main() { ll N, K; cin >> N >> K; if (K * 1000 >= N) { ll num1 = (N / 1000); func(K, num1); } else if (N % (K * 1000) == 0) { cout << 1 << endl; } else { ll num1 = (N % (1000 * K)) / 1000; clock_t start = clock(); func(K, num1); clock_t end = clock(); //std::cout << "duration = " << (double)(end - start) / CLOCKS_PER_SEC << "sec.\n"; } getchar(); getchar(); return 0; }