#pragma GCC optimize("Ofast") #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long #define vec vector #define vecd vector #define vecll vector #define Graph vector> #define wGraph vector> #define rep(i, n) for (int i = 0; i < (int)(n); i++) /* rep(i, n) { cout << i; } */ /* for (auto& x: X) { cin >> x; } */ #define krep(i, k, n) for (int i = k; i < (int)(n); i++) #define prep(i, n) for (int i = 1; i <= (int)(n); i++) #define irep(i, n) for (int i = (int)n - 1; i >= 0; i--) #define all(v) v.begin(), v.end() /* vector v = {2, 3, 1} sort(all(v)) */ #define INF INT_MAX #define LINF LLONG_MAX const int dx[4] = {1, 0, -1, 0}; const int dy[4] = {0, 1, 0, -1}; vec pow_vec{1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000}; vecll pow_vecll{1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, 10000000000, 100000000000, 1000000000000}; void print_vec(vec v) { rep(i, (int)v.size()) { cout << v.at(i); } cout << endl; } void print_vecll(vecll v) { rep(i, (int)v.size()) { cout << v.at(i); } cout << endl; } vec string_to_vec(string s) { vec v(s.size()); rep(i, (int)s.size()) { v.at(i) = s.at(i) - '0'; } return v; } char int_to_alphabet(int i) { // i = 0 -> a // i = 25 -> z return i + 'a'; } int alphabet_to_int(char s) { return s - 'a'; } int mmod(int a, int b) { a += (abs(a / b) + 1) * b; return a % b; } ll mmod(ll a, ll b) { a += (abs(a / b) + 1) * b; return a % b; } bool s_contain(string s, char c) { if (s.find(c) != string::npos) { return true; } else { return false; } } // mod. m での a の逆元 a^{-1} を計算する long long modinv(long long a, long long m) { long long b = m, u = 1, v = 0; while (b) { long long t = a / b; a -= t * b; swap(a, b); u -= t * v; swap(u, v); } u %= m; if (u < 0) u += m; return u; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); // ---------------------------------------------------------------- const ll MOD = 10007; ll K,S,N; cin >> K >> S >> N; vector F(K+1); F.at(0) = 1; F.at(1)=1; krep(i,2,K+1){ F.at(i) = F.at(i-1)+F.at(i-2); } vector A(N); ll ans = 0; A.at(0)=S; for(int i=1; i