#include using namespace std; using ll = long long; const int MOD = 1e9+7; #define rep(i,n) for(int i=0;i<(n);++i) struct Matrix { ll a, b, c, d; public: Matrix(ll a, ll b, ll c, ll d) : a(a % MOD), b(b % MOD), c(c % MOD), d(d % MOD) {} }; Matrix mul(Matrix A, Matrix B) { return Matrix(A.a * B.a + A.b * B.c, A.a * B.b + A.b * B.d, A.c * B.a + A.d * B.c, A.c * B.b + A.d * B.d); } Matrix pow(Matrix A, int p) { if (p == 1) return A; if (p % 2 == 0) return pow(mul(A, A), p / 2); else return mul(pow(mul(A, A), p / 2), A); } int main() { int a, b, n; cin >> a >> b >> n; if (n == 0) cout << 0 << endl; else if (n == 1) cout << 1 << endl; else { Matrix m(0, 1, b, a); m = pow(m, n-1); cout << m.d << endl; } return 0; }