#include using namespace std; #include using namespace atcoder; using ll = long long; [[maybe_unused]] constexpr ll INF = (1LL << 60) - 1; using mint = static_modint<10007>; void solve() { ll k, s, n; cin >> k >> s >> n; vector> f(n, nullopt); f[0] = 1, f[1] = 1; auto fib = [&](auto self, ll n) -> mint { if (f[n] == nullopt) f[n] = self(self, n - 1) + self(self, n - 2); return *f[n]; }; vector val(n, 0); val[0] = s; for (ll i = 1; i < n; ++i) { ll l = max(i - k - 1, 0ll); for (ll j = l; j < i; ++j) { val[i] += val[j] / fib(fib, i - j - 1); } } cout << val[n - 1].val() << "\n"; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); ll t = 1; // cin >> t; while (t--) { solve(); } return 0; }