import numpy as np a,b,n=map(int,input().split()) m=10**9+7 k=n//2 def dot(A,B): n=A.shape[0] ans=np.zeros(A.shape,dtype=np.int64) A=A%m B=B%m for i in range(n): for j in range(n): for k in range(n): ans[i,j]=ans[i,j]+(A[i,k]*B[k,j])%m return ans def pow(A,k): last=np.eye(A.shape[0]) cur_A=A while True: if k==0: cur_A=np.eye(A.shape[0]) break elif k%2==0: cur_A=dot(cur_A,cur_A) k=k/2 else: k=k-1 last=dot(last,cur_A) return dot(cur_A,last) l=1-(n-2*k) A=np.array([[a*a+b,a],[a*b,b]]) B=pow(A,k) print(int(B[0,l]))