#include #include constexpr intmax_t MOD = 1e9+7; intmax_t modpow(intmax_t base, intmax_t iexp) { intmax_t res = 1; for (intmax_t dbl = base; iexp; iexp >>= 1) { if (iexp & 1) res = res * dbl % MOD; dbl = dbl * dbl % MOD; } return res; } intmax_t modinv(intmax_t n) { return modpow(n, MOD-2); } intmax_t moddiv(intmax_t m, intmax_t n) { return m * modinv(n) % MOD; } intmax_t modsub(intmax_t m, intmax_t n) { m -= n; if (m < 0) m += MOD; return m; } int main() { intmax_t B, C, D; scanf("%jd %jd %jd", &B, &C, &D); B %= MOD; C %= MOD; if (C == 1) return !printf("%jd\n", B * (D % MOD) % MOD); intmax_t Cn = modpow(C, D+1); printf("%jd\n", modsub(modsub(Cn, 1) * moddiv(B, modsub(C, 1)) % MOD, B)); }