def mod_Gamma(A, Gamma, mod): d = len(Gamma) - 1 while len(A) - 1 >= d: n = len(A) - 1 for i in range(d): A[n - d + i] -= A[n] * Gamma[i] A[n - d + i] %= mod A.pop() return A def convolution(A, B, mod): d = len(A) + len(B) - 1 C = [0] * d for i in range(len(A)): for j in range(len(B)): C[i + j] += A[i] * B[j] C[i + j] %= mod return C def modpow(N, Gamma, mod): R = [1] B = [0, 1] while N > 0: if N % 2 == 1: R = mod_Gamma(convolution(R, B, mod), Gamma, mod) B = mod_Gamma(convolution(B, B, mod), Gamma, mod) N //= 2 return R def Fiduccia(A, Gamma, N, mod): R = modpow(N, Gamma, mod) ans = 0 for i in range(len(R)): ans += A[i] * R[i] ans %= mod return ans a, b, N = map(int,input().split()) A = [0, 1] mod = 10**9 + 7 Gamma = [-b, -a, 1] ans = Fiduccia(A, Gamma, N, mod) print(ans)