package main import . "fmt" import . "math/big" const M = 10007 func main() { var k int var s,n int64 Scan(&k,&s,&n) fib := make([]int64, 502) fib[0] = 1 fib[1] = 1 for i := 2; i < len(fib); i++ { fib[i] = (fib[i-1]+fib[i-2])%M } rfib := make([]int64, 502) for i, f := range fib { rfib[i] = new(Int).ModInverse(NewInt(f),NewInt(M)).Int64() } a := make([]int64, n+1) a[0] = 0 a[1] = s for i := 2; i < len(a); i++ { for j := 0; j <= k && i-1-j>=0; j++ { a[i] = (a[i] + a[i-1-j]*rfib[j]%M)%M } } Println(a[n]) }