## https://yukicoder.me/problems/no/573 MOD = 10 ** 9 + 7 def main(): A, B, N = map(int, input().split()) # 素数列挙 primes = [] is_primes = [True] * (B + 1) for p in range(2, B + 1): if not is_primes[p]: continue x = 2 * p primes.append(p) while x <= B: is_primes[x] = False x += p pow_n = [0] * ((B // 2) + 1) for b in range(1, (B // 2) + 1): pow_n[b] = pow(b, N, MOD - 1) answer = 1 for p in primes: p1 = p z = 0 while p1 <= B: x = B // p1 - (A - 1) // p1 if x > 0: z += pow_n[x] z %= (MOD - 1) p1 *= p answer *= pow(p, z, MOD) answer %= MOD print(answer) if __name__ == '__main__': main()