#include using i64 = long long; template struct exfield { i64 a, b; i64 c; exfield operator+(const exfield& r) const { return exfield{(a + r.a) % MOD, (b + r.b) % MOD, c}; } exfield operator*(const exfield& r) const { return exfield{(a * r.a % MOD + b * r.b % MOD * c % MOD) % MOD, (a * r.b % MOD + b * r.a % MOD) % MOD, c}; } exfield power(i64 k) const { exfield ret{1, 0, c}, x{a, b, c}; while(k) { if(k & 1) ret = ret * x; x = x * x; k >>= 1; } return ret; } }; int main() { int a, b; i64 n; scanf("%d%d%lld", &a, &b, &n); printf("%lld\n", (exfield<>{a, 1, b}.power(n) + exfield<>{a, -1, b}.power(n)).a); return 0; }