import math N = int(input()) sqrtN = math.isqrt(N) Q = [N // i for i in range(1, sqrtN + 1)] Q += list(range(Q[-1] - 1, 0, -1)) S = {i: i - 1 for i in Q} for x in range(2, sqrtN + 1): if S[x] > S[x - 1]: for n in Q: if n < x * x: break S[n] -= S[n // x] - S[x - 1] MOD = 1000000007 ans = 1 Q.reverse() for i in range(1, len(Q)): v, x = 1, N while x > 0: x //= Q[i] v += x ans = ans * pow(v, S[Q[i]] - S[Q[i - 1]], MOD) % MOD print(ans)