def modPow(a,n,mod):#繰り返し二乗法 a**n % mod if n==0: return 1 if n==1: return a%mod if n & 1: return (a*modPow(a,n-1,mod)) % mod t = modPow(a,n>>1,mod) return (t*t)%mod def invmod(a,mod):#mod逆元 if a == 0: return 0 if a == 1: return 1 return (-invmod(mod % a, mod) * (mod // a)) % mod B,C,D = map(int,input().split()) mod = 10**9+7 if C == 1: print((B*D)%mod) exit() ans = ((B%mod)*(C%mod)*(modPow(C%mod, D, mod)-1)*invmod((C-1)%mod, mod))%mod if C-1 == mod: print((B*C*D)%mod) exit() print(ans)