#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef long double ld; typedef pair P; int a, b; ll n; const int md = (int)1e9 + 7; #define ADD(x, y) (x + y) % md #define MUL(x, y) (x * y) % md P f(P l, P r) { return P(ADD(MUL(l.first, r.first), MUL(MUL(l.second, r.second), b)), ADD(MUL(l.first, r.second), MUL(l.second, r.first))); } P g(P l, ll n) { P t(1, 0); while (n) { if (n & 1) t = f(t, l); l = f(l, l); n >>= 1; } return t; } int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> a >> b >> n; P s = g(P(a, 1), n); P t = g(P(a, -1), n); ll m = ADD(s.first, t.first); cout << m << "\n"; }