#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define Samurai ios_base::sync_with_stdio(false), cout.tie(NULL), cin.tie(NULL);
#define pr_g priority_queue<pair<ll,int>, vector<pair<ll,int>>,greater<pair<ll,int>>>
int dx [] = {0, 0, 1, -1, 1, 1, -1, -1};
int dy [] = {-1, 1, 0, 0, -1, 1, 1, -1};
const double PI = acos(-1.0);
#define el '\n'
const ll mod = 1e9, N = 5e5 + 5, OO = 0x3f3f3f3f;
void solve(){
ll n, k; cin >> n >> k;
if (k > n) return void (cout << 1);
vector<ll> v(n + 1, 0), p(n + 1, 0);
for (int i = 0; i < k; i++){
v[i] = 1;
p[i] = v[i];
if(i > 0) p[i] += p[i - 1];
}
for (int i = k; i <= n; i++) {
v[i] = (p[i - 1] - p[i - k - 1])%mod;
p[i] = v[i];
p[i] += p[i - 1];
}
cout << v[n]%mod;
}
int main() { Samurai
int _t = 1; //cin >> _t;
for (int i = 1; i <= _t; i++){
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgU2FtdXJhaSBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKSwgY291dC50aWUoTlVMTCksIGNpbi50aWUoTlVMTCk7CiNkZWZpbmUgcHJfZyBwcmlvcml0eV9xdWV1ZTxwYWlyPGxsLGludD4sIHZlY3RvcjxwYWlyPGxsLGludD4+LGdyZWF0ZXI8cGFpcjxsbCxpbnQ+Pj4KaW50IGR4IFtdID0gezAsIDAsIDEsIC0xLCAxLCAxLCAtMSwgLTF9OwppbnQgZHkgW10gPSB7LTEsIDEsIDAsIDAsIC0xLCAxLCAxLCAtMX07CmNvbnN0IGRvdWJsZSBQSSA9IGFjb3MoLTEuMCk7CiNkZWZpbmUgZWwgJ1xuJwpjb25zdCBsbCBtb2QgPSAxZTksIE4gPSA1ZTUgKyA1LCBPTyA9IDB4M2YzZjNmM2Y7CgoKdm9pZCBzb2x2ZSgpewogICAgbGwgbiwgazsgY2luID4+IG4gPj4gazsKICAgIAogICAgaWYgKGsgPiBuKSByZXR1cm4gdm9pZCAoY291dCA8PCAxKTsKICAgIAogICAgdmVjdG9yPGxsPiB2KG4gKyAxLCAwKSwgcChuICsgMSwgMCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKyl7CiAgICAgICAgdltpXSA9IDE7CiAgICAgICAgcFtpXSA9IHZbaV07CiAgICAgICAgaWYoaSA+IDApIHBbaV0gKz0gcFtpIC0gMV07CiAgICB9CiAgICAKICAgIGZvciAoaW50IGkgPSBrOyBpIDw9IG47IGkrKykgewogICAgICAgIHZbaV0gPSAocFtpIC0gMV0gLSBwW2kgLSBrIC0gMV0pJW1vZDsKICAgICAgICBwW2ldID0gdltpXTsKICAgICAgICBwW2ldICs9IHBbaSAtIDFdOwogICAgfQogICAgCiAgICBjb3V0IDw8IHZbbl0lbW9kOwp9CgppbnQgbWFpbigpIHsgU2FtdXJhaQogICAgaW50IF90ID0gMTsgLy9jaW4gPj4gX3Q7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBfdDsgaSsrKXsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=