n = int(eval(input()))

exps = [0] * 1003



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

    t = i

    div = 2

    while div*div <= i:

        if t % div == 0:

            exps[div] += 1

            t //= div

        else:

            div += 1

    if t != 1:

        exps[t] += 1



ans = 1

mod = int(1e9) + 7



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

    ans *= (exps[i] + 1)

    ans %= mod



print(ans)
def prime_factorize(n):

    res = []

    p = 2

    while p*p <= n:

        if n % p != 0:

            p += 1

            continue

        num = 0

        while n % p == 0:

            num += 1

            n //= p

        res.append( [p, num] )

        p += 1



    if n != 1: res.append( [n, 1] )



    return res





# n! の約数の数を mod で割った余りを返す

def mod_div_fact(n, mod):

    d = {}

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

        L = prime_factorize(i)

        for (p, e) in L:

            d[p] = d.get(p, 0) + e

    res = 1

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

        res *= (v+1)

        res %= mod

    return res;



n = int(eval(input()))

mod = int(1e9)+7



print((mod_div_fact(n, mod)))
n = int(eval(input()))
exps = [0] * 1003
for i in range(2, n + 1):
    t = i
    div = 2
    while div * div <= i:
        if t % div == 0:
            exps[div] += 1
            t //= div
        else:
            div += 1
    if t != 1:
        exps[t] += 1
ans = 1
mod = int(1e9) + 7
for i in range(2, n + 1):
    ans *= exps[i] + 1
    ans %= mod
print(ans)

def prime_factorize(n):
    res = []
    p = 2
    while p * p <= n:
        if n % p != 0:
            p += 1
            continue
        num = 0
        while n % p == 0:
            num += 1
            n //= p
        res.append([p, num])
        p += 1
    if n != 1:
        res.append([n, 1])
    return res


# n! の約数の数を mod で割った余りを返す
def mod_div_fact(n, mod):
    d = {}
    for i in range(2, n + 1):
        L = prime_factorize(i)
        for (p, e) in L:
            d[p] = d.get(p, 0) + e
    res = 1
    for v in list(d.values()):
        res *= v + 1
        res %= mod
    return res


n = int(eval(input()))
mod = int(1e9) + 7
print((mod_div_fact(n, mod)))

+def prime_factorize(n): +    res = [] +    p = 2 +    while p * p <= n: +        if n % p != 0: +            p += 1 +            continue +        num = 0 +        while n % p == 0: +            num += 1 +            n //= p +        res.append([p, num]) +        p += 1 +    if n != 1: +        res.append([n, 1]) +    return res + + +# n! の約数の数を mod で割った余りを返す +def mod_div_fact(n, mod): +    d = {} +    for i in range(2, n + 1): +        L = prime_factorize(i) +        for (p, e) in L: +            d[p] = d.get(p, 0) + e +    res = 1 +    for v in list(d.values()): +        res *= v + 1 +        res %= mod +    return res + + -exps = [0] * 1003 -for i in range(2, n + 1): -    t = i -    div = 2 -    while div * div <= i: -        if t % div == 0: -            exps[div] += 1 -            t //= div -        else: -            div += 1 -    if t != 1: -        exps[t] += 1 -ans = 1 -for i in range(2, n + 1): -    ans *= exps[i] + 1 -    ans %= mod -print(ans) +print((mod_div_fact(n, mod)))