def main():

    N = int(eval(input()))

    MOD = 10**9 + 7

    ans = 1

    primes = sorted(Eratosthenes(N))

    for p in primes:

        cur = 0

        k = 1

        while p**k <= N:

            cur += N//(p**k)

            k += 1

        ans = ans * (cur+1) % MOD

    print((ans%MOD))



def Eratosthenes(x: int) -> set:

    """x以下の素数のsetを返す"""

    import math

    sup = int(x)

    primes = {i for i in range(2,sup+1)}

    for i in range(2,int(math.sqrt(sup+1))+1):

        if i in primes:

            mul = 2

            while i*mul <= sup:

                primes.discard(i*mul)

                mul += 1

    return primes



if __name__ == '__main__':

    main()
def main():

    N = int(eval(input()))

    MOD = 10**9 + 7



    def Eratosthenes(sup: int) -> set:

        from math import sqrt

        primes = {i for i in range(2, sup+1)}

        for i in range(2, int(sqrt(sup+1))+1):

            if i in primes:

                mul = 2

                while i*mul <= sup:

                    primes.discard(i*mul)

                    mul += 1

        return primes



    ps = Eratosthenes(N)

    ans = 1

    for p in ps:

        cur = 0

        i = 1

        while N//(p**i) > 0:

            cur += N//(p**i)

            i += 1

        ans *= (cur+1)

        ans %= MOD

    print((ans % MOD))





if __name__ == '__main__':

    main()

def main():
    N = int(eval(input()))
    MOD = 10**9 + 7
    ans = 1
    primes = sorted(Eratosthenes(N))
    for p in primes:
        cur = 0
        k = 1
        while p**k <= N:
            cur += N // (p**k)
            k += 1
        ans = ans * (cur + 1) % MOD
    print((ans % MOD))


def Eratosthenes(x: int) -> set:
    """x以下の素数のsetを返す"""
    import math

    sup = int(x)
    primes = {i for i in range(2, sup + 1)}
    for i in range(2, int(math.sqrt(sup + 1)) + 1):
        if i in primes:
            mul = 2
            while i * mul <= sup:
                primes.discard(i * mul)
                mul += 1
    return primes


if __name__ == "__main__":
    main()

def main():
    N = int(eval(input()))
    MOD = 10**9 + 7

    def Eratosthenes(sup: int) -> set:
        from math import sqrt

        primes = {i for i in range(2, sup + 1)}
        for i in range(2, int(sqrt(sup + 1)) + 1):
            if i in primes:
                mul = 2
                while i * mul <= sup:
                    primes.discard(i * mul)
                    mul += 1
        return primes

    ps = Eratosthenes(N)
    ans = 1
    for p in ps:
        cur = 0
        i = 1
        while N // (p**i) > 0:
            cur += N // (p**i)
            i += 1
        ans *= cur + 1
        ans %= MOD
    print((ans % MOD))


if __name__ == "__main__":
    main()

+ +    def Eratosthenes(sup: int) -> set: +        from math import sqrt + +        primes = {i for i in range(2, sup + 1)} +        for i in range(2, int(sqrt(sup + 1)) + 1): +            if i in primes: +                mul = 2 +                while i * mul <= sup: +                    primes.discard(i * mul) +                    mul += 1 +        return primes + +    ps = Eratosthenes(N) -    primes = sorted(Eratosthenes(N)) -    for p in primes: +    for p in ps: -        k = 1 -        while p**k <= N: -            cur += N // (p**k) -            k += 1 -        ans = ans * (cur + 1) % MOD +        i = 1 +        while N // (p**i) > 0: +            cur += N // (p**i) +            i += 1 +        ans *= cur + 1 +        ans %= MOD - - -def Eratosthenes(x: int) -> set: -    """x以下の素数のsetを返す""" -    import math - -    sup = int(x) -    primes = {i for i in range(2, sup + 1)} -    for i in range(2, int(math.sqrt(sup + 1)) + 1): -        if i in primes: -            mul = 2 -            while i * mul <= sup: -                primes.discard(i * mul) -                mul += 1 -    return primes