#include #include #include #include #include namespace mpp = boost::multiprecision; using namespace std; using namespace atcoder; using ll = long long; using ld = long double; using P = pair; using T = tuple; using vll = vector; using vb = vector; using vvll = vector>; using vP = vector

; using Graph = vector>; using WGraph = vector>>; // コスト、頂点番号の順 //using mint = modint998244353; using mint = static_modint<10007>; using Bint = mpp::cpp_int; // 多倍長整数 //using mint = long double; #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) #define rep1(i, n) for (ll i = 1; i <= (ll)(n); i++) mt19937_64 rng(58); long double PI = 3.14159265358979; const ll LLMAX = 9223372036854775807; const ll INF = 1e18; vector di = {-1, 0, 1, 0}; // 上左下右 vector dj = {0, -1, 0, 1}; template inline bool chmax(T &a, T b) { return ((a < b) ? (a = b, true) : (false)); } template inline bool chmin(T &a, T b) { return ((a > b) ? (a = b, true) : (false)); } int main() { ll k, s, n; cin >> k >> s >> n; vector f(k + 1); f[0] = 1; f[1] = 1; rep (i, k - 1) f[i + 2] = f[i] + f[i + 1]; vector a(n); a[0] = s; rep (i, n - 1) { rep (j, k + 1) { if (i - j >= 0) a[i + 1] += a[i - j] / f[j]; } } cout << a[n - 1].val() << endl; return 0; }