from collections import defaultdict

n = int(eval(input()))

MOD = 10**9+7





def factorization(n):

    retval = []

    tmp = n

    for i in range(2, int(-(-n**.5//1))+1):

        if tmp % i == 0:

            cnt = 0

            while tmp % i == 0:

                cnt += 1

                tmp //= i

            retval.append((i, cnt))

    if tmp != 1:

        retval.append((tmp, 1))

    if not retval:

        retval.append((n, 1))

    return retval





d = defaultdict(int)

for i in range(1, n+1):

    f = factorization(i)

    for k, v in f:

        d[k] += v



ans = 1



for k, v in list(d.items()):

    if k == 1:

        continue

    ans = ans*(v+1) % MOD



print(ans)

from collections import defaultdict

MOD = 10**9+7

n = int(eval(input()))





def sieve(n):

    n += 1

    res = [i for i in range(n)]

    for p in range(2, int(n**.5)+1):

        if res[p] < p:

            continue

        for q in range(p**2, n, p):

            if res[q] == q:

                res[q] = p

    return res





U = 10**3

min_factor = sieve(U)

pf = defaultdict(lambda: 0)





def prime_factor(n):

    while 1 < n:

        pf[min_factor[n]] += 1

        n //= min_factor[n]





for i in range(1, n+1):

    prime_factor(i)



ans = 1

for v in list(pf.values()):

    ans *= v+1

    ans %= MOD

print(ans)

from collections import defaultdict

n = int(eval(input()))
MOD = 10**9 + 7


def factorization(n):
    retval = []
    tmp = n
    for i in range(2, int(-(-(n**0.5) // 1)) + 1):
        if tmp % i == 0:
            cnt = 0
            while tmp % i == 0:
                cnt += 1
                tmp //= i
            retval.append((i, cnt))
    if tmp != 1:
        retval.append((tmp, 1))
    if not retval:
        retval.append((n, 1))
    return retval


d = defaultdict(int)
for i in range(1, n + 1):
    f = factorization(i)
    for k, v in f:
        d[k] += v
ans = 1
for k, v in list(d.items()):
    if k == 1:
        continue
    ans = ans * (v + 1) % MOD
print(ans)

from collections import defaultdict

MOD = 10**9 + 7
n = int(eval(input()))


def sieve(n):
    n += 1
    res = [i for i in range(n)]
    for p in range(2, int(n**0.5) + 1):
        if res[p] < p:
            continue
        for q in range(p**2, n, p):
            if res[q] == q:
                res[q] = p
    return res


U = 10**3
min_factor = sieve(U)
pf = defaultdict(lambda: 0)


def prime_factor(n):
    while 1 < n:
        pf[min_factor[n]] += 1
        n //= min_factor[n]


for i in range(1, n + 1):
    prime_factor(i)
ans = 1
for v in list(pf.values()):
    ans *= v + 1
    ans %= MOD
print(ans)

+MOD = 10**9 + 7 -MOD = 10**9 + 7 -def factorization(n): -    retval = [] -    tmp = n -    for i in range(2, int(-(-(n**0.5) // 1)) + 1): -        if tmp % i == 0: -            cnt = 0 -            while tmp % i == 0: -                cnt += 1 -                tmp //= i -            retval.append((i, cnt)) -    if tmp != 1: -        retval.append((tmp, 1)) -    if not retval: -        retval.append((n, 1)) -    return retval +def sieve(n): +    n += 1 +    res = [i for i in range(n)] +    for p in range(2, int(n**0.5) + 1): +        if res[p] < p: +            continue +        for q in range(p**2, n, p): +            if res[q] == q: +                res[q] = p +    return res -d = defaultdict(int) +U = 10**3 +min_factor = sieve(U) +pf = defaultdict(lambda: 0) + + +def prime_factor(n): +    while 1 < n: +        pf[min_factor[n]] += 1 +        n //= min_factor[n] + + -    f = factorization(i) -    for k, v in f: -        d[k] += v +    prime_factor(i) -for k, v in list(d.items()): -    if k == 1: -        continue -    ans = ans * (v + 1) % MOD +for v in list(pf.values()): +    ans *= v + 1 +    ans %= MOD