def main(): import sys A, B, N = map(int, sys.stdin.readline().split()) MOD = 10**9 + 7 MOD_MINUS_1 = MOD - 1 # Sieve of Eratosthenes to find all primes up to B if B < 2: print(1) return is_prime = [True] * (B + 1) is_prime[0] = is_prime[1] = False for i in range(2, int(B**0.5) + 1): if is_prime[i]: for j in range(i * i, B + 1, i): is_prime[j] = False primes = [i for i, prime in enumerate(is_prime) if prime] result = 1 for p in primes: sum_e = 0 current_power = p while current_power <= B: m = current_power cnt = B // m - (A - 1) // m if cnt <= 0: break term = pow(cnt, N, MOD_MINUS_1) sum_e = (sum_e + term) % MOD_MINUS_1 current_power *= p if sum_e != 0: result = (result * pow(p, sum_e, MOD)) % MOD print(result) if __name__ == "__main__": main()