## https://yukicoder.me/problems/no/573 MOD = 10 ** 9 + 7 def main(): A, B, N = map(int, input().split()) dp = [0] * (B + 1) cache = [-1] * (B + 1) for b in reversed(range(1, B + 1)): x = B // b - (A - 1) // b if cache[x] == -1: cache[x] = pow(x, N, MOD - 1) y = cache[x] z = 2 * b while z <= B: y -= dp[z] y %= (MOD - 1) z += b dp[b] = y answer = 1 for b in range(1, B + 1): x = pow(b, dp[b], MOD) answer *= x answer %= MOD print(answer) if __name__ == '__main__': main()