# -*- coding: utf-8 -*-



# AtCoder Beginner Contest

# Problem C





# See:

# https://beta.atcoder.jp/contests/abc052/submissions/2246922

def get_prime_dict(number: int) -> dict:

    ''' number: 2 or greater.

    '''

    from collections import OrderedDict



    prime_dict = OrderedDict()

    j = 2

    prime_dict[j] = 0



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

        if all(i % j != 0 for j in list(prime_dict.keys())):

            prime_dict[i] = 0

    return prime_dict





def execute_prime_factorization(primes: dict, number: int):

    for key in list(primes.keys()):

        if number >= key:

            tmp = number



            while tmp >= key:

                if tmp % key == 0:

                    primes[key] += 1

                    tmp = int(tmp / key)

                else:

                    break

    return primes





if __name__ == '__main__':

    number = int(eval(input()))



    if number == 1:

        print((1))

        exit()



    # See:

    # https://atcoder.jp/img/arc067/editorial.pdf

    primes = get_prime_dict(number)

    count = 1



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

        execute_prime_factorization(primes, i)



    for value in list(primes.values()):

        count = ((value + 1) * count) % (10 ** 9 + 7)



    print(count)

# -*- coding: utf-8 -*-

'''Snippets for factorization.

Available functions:

- run_prime_factorization: Run prime factorization.

'''





def run_prime_factorization(max_number: int) -> dict:

    '''Run prime factorization.

    Args:

        max_number: Int of number (greater than 1).

    Returns:

        A dictionary's items ((base, exponent) pairs).

    Landau notation: O(log n)

    '''



    from math import sqrt



    ans = dict()

    remain = max_number



    for base in range(2, int(sqrt(max_number)) + 1):

        if remain % base == 0:

            exponent_count = 0



            while remain % base == 0:

                exponent_count += 1

                remain //= base



            ans[base] = exponent_count



    if remain != 1:

        ans[remain] = 1



    return ans





def main():

    n = int(eval(input()))

    mod = 10 ** 9 + 7

    ans = 1

    d = dict()



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

        f = run_prime_factorization(i)



        for fi in list(f.keys()):

            if fi not in list(d.keys()):

                d[fi] = 1

            else:

                d[fi] += f[fi]



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

        ans *= value + 1

        ans %= mod



    print(ans)





if __name__ == '__main__':

    main()

# -*- coding: utf-8 -*-
# AtCoder Beginner Contest
# Problem C
# See:
# https://beta.atcoder.jp/contests/abc052/submissions/2246922
def get_prime_dict(number: int) -> dict:
    """number: 2 or greater."""
    from collections import OrderedDict

    prime_dict = OrderedDict()
    j = 2
    prime_dict[j] = 0
    for i in range(2, number + 1):
        if all(i % j != 0 for j in list(prime_dict.keys())):
            prime_dict[i] = 0
    return prime_dict


def execute_prime_factorization(primes: dict, number: int):
    for key in list(primes.keys()):
        if number >= key:
            tmp = number
            while tmp >= key:
                if tmp % key == 0:
                    primes[key] += 1
                    tmp = int(tmp / key)
                else:
                    break
    return primes


if __name__ == "__main__":
    number = int(eval(input()))
    if number == 1:
        print((1))
        exit()
    # See:
    # https://atcoder.jp/img/arc067/editorial.pdf
    primes = get_prime_dict(number)
    count = 1
    for i in range(2, number + 1):
        execute_prime_factorization(primes, i)
    for value in list(primes.values()):
        count = ((value + 1) * count) % (10**9 + 7)
    print(count)

# -*- coding: utf-8 -*-
"""Snippets for factorization.
Available functions:
- run_prime_factorization: Run prime factorization.
"""


def run_prime_factorization(max_number: int) -> dict:
    """Run prime factorization.
    Args:
        max_number: Int of number (greater than 1).
    Returns:
        A dictionary's items ((base, exponent) pairs).
    Landau notation: O(log n)
    """
    from math import sqrt

    ans = dict()
    remain = max_number
    for base in range(2, int(sqrt(max_number)) + 1):
        if remain % base == 0:
            exponent_count = 0
            while remain % base == 0:
                exponent_count += 1
                remain //= base
            ans[base] = exponent_count
    if remain != 1:
        ans[remain] = 1
    return ans


def main():
    n = int(eval(input()))
    mod = 10**9 + 7
    ans = 1
    d = dict()
    for i in range(2, n + 1):
        f = run_prime_factorization(i)
        for fi in list(f.keys()):
            if fi not in list(d.keys()):
                d[fi] = 1
            else:
                d[fi] += f[fi]
    for value in list(d.values()):
        ans *= value + 1
        ans %= mod
    print(ans)


if __name__ == "__main__":
    main()

-# AtCoder Beginner Contest -# Problem C -# See: -# https://beta.atcoder.jp/contests/abc052/submissions/2246922 -def get_prime_dict(number: int) -> dict: -    """number: 2 or greater.""" -    from collections import OrderedDict - -    prime_dict = OrderedDict() -    j = 2 -    prime_dict[j] = 0 -    for i in range(2, number + 1): -        if all(i % j != 0 for j in list(prime_dict.keys())): -            prime_dict[i] = 0 -    return prime_dict +"""Snippets for factorization. +Available functions: +- run_prime_factorization: Run prime factorization. +""" -def execute_prime_factorization(primes: dict, number: int): -    for key in list(primes.keys()): -        if number >= key: -            tmp = number -            while tmp >= key: -                if tmp % key == 0: -                    primes[key] += 1 -                    tmp = int(tmp / key) -                else: -                    break -    return primes +def run_prime_factorization(max_number: int) -> dict: +    """Run prime factorization. +    Args: +        max_number: Int of number (greater than 1). +    Returns: +        A dictionary's items ((base, exponent) pairs). +    Landau notation: O(log n) +    """ +    from math import sqrt + +    ans = dict() +    remain = max_number +    for base in range(2, int(sqrt(max_number)) + 1): +        if remain % base == 0: +            exponent_count = 0 +            while remain % base == 0: +                exponent_count += 1 +                remain //= base +            ans[base] = exponent_count +    if remain != 1: +        ans[remain] = 1 +    return ans + + +def main(): +    n = int(eval(input())) +    mod = 10**9 + 7 +    ans = 1 +    d = dict() +    for i in range(2, n + 1): +        f = run_prime_factorization(i) +        for fi in list(f.keys()): +            if fi not in list(d.keys()): +                d[fi] = 1 +            else: +                d[fi] += f[fi] +    for value in list(d.values()): +        ans *= value + 1 +        ans %= mod +    print(ans) -    number = int(eval(input())) -    if number == 1: -        print((1)) -        exit() -    # See: -    # https://atcoder.jp/img/arc067/editorial.pdf -    primes = get_prime_dict(number) -    count = 1 -    for i in range(2, number + 1): -        execute_prime_factorization(primes, i) -    for value in list(primes.values()): -        count = ((value + 1) * count) % (10**9 + 7) -    print(count) +    main()