MOD = 10007 k, s, n = read_line.split.map(&.to_i) fib = [1, 1] while fib.size <= k fib << (fib[-1] + fib[-2]) % MOD end fib = fib.map { |v| inv(v.to_i64) } ss = [s] (n - 1).times do |i| sum = 0 {k + 1, i + 1}.min.times do |j| sum += ss[i - j] * fib[j] sum %= MOD end ss << sum end puts ss[-1] def inv(v : Int64) pow(v, MOD - 2) end def pow(v : Int64, p) ret = 1i64 while p > 0 if (p & 1i64) != 0 ret *= v ret %= MOD end v *= v v %= MOD p >>= 1 end ret end