#

# Written by NoKnowledgeGG @YlePhan

# ('ω')

#

#import math

#mod = 10**9+7

#import itertools

#import fractions

#import numpy as np

#mod = 10**4 + 7

"""def kiri(n,m):

  r_ = n / m

  if (r_ - (n // m)) > 0:

    return (n//m) + 1

  else:

    return (n//m)"""



""" n! mod m 階乗

mod = 1e9 + 7

N = 10000000

fac = [0] * N

def ini():

  fac[0] = 1 % mod

  for i in range(1,N):

    fac[i] = fac[i-1] * i % mod"""



"""mod = 1e9+7

N = 10000000

pw = [0] * N

def ini(c):

  pw[0] = 1 % mod

  for i in range(1,N):

    pw[i] = pw[i-1] * c % mod"""



"""

def YEILD():

  yield 'one'

  yield 'two'

  yield 'three'

generator = YEILD()

print(next(generator))

print(next(generator))

print(next(generator))

"""

"""def gcd_(a,b):

  if b == 0:#結局はc,0の最大公約数はcなのに

    return a

  return gcd_(a,a % b) # a = p * b + q"""

"""def extgcd(a,b,x,y):

  d = a

  if b!=0:

    d = extgcd(b,a%b,y,x)

    y -= (a//b) * x

    print(x,y)

  else:

    x = 1

    y = 0

  return d"""





def readInts():

  return list(map(int,input().split()))

mod = 10**9 + 7

def main():

  n = int(eval(input()))

  m = 1

  for _ in range(n,1,-1):

    m *= _

  

  cnt = 1

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

    tmp = 1

    while m % i == 0:

      m //= i

      tmp += 1

    cnt *= tmp

  print((cnt%mod))

if __name__ == '__main__':

  main()
#from statistics import median

#import collections

#aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]

#from itertools import combinations # (string,3) 3回

#from collections import deque

#import collections.defaultdict

#import bisect

#

#    d = m - k[i] - k[j]

#    if kk[bisect.bisect_right(kk,d) - 1] == d:

#

#

#

# pythonで無理なときは、pypyでやると正解するかも！！

#

#



mod = 10**9 + 7



def readInts():

  return list(map(int,input().split()))

def main():

    n = int(eval(input()))

    dic = {}

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

        a = i

        p = 2

        while p * p <= a:

            if a % p == 0:

                if p in dic:

                    dic[p] += 1

                else:

                    dic[p] = 1

                a //=p

            else:

                p += 1

        if a in dic:

            dic[a] += 1

        else:

            dic[a] = 1

    ans = 1

    #print(dic)

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

        ans *= (v+1)

    print((ans%mod))

if __name__ == '__main__':

  main()

#
# Written by NoKnowledgeGG @YlePhan
# ('ω')
#
# import math
# mod = 10**9+7
# import itertools
# import fractions
# import numpy as np
# mod = 10**4 + 7
"""def kiri(n,m):
  r_ = n / m
  if (r_ - (n // m)) > 0:
    return (n//m) + 1
  else:
    return (n//m)"""
""" n! mod m 階乗
mod = 1e9 + 7
N = 10000000
fac = [0] * N
def ini():
  fac[0] = 1 % mod
  for i in range(1,N):
    fac[i] = fac[i-1] * i % mod"""
"""mod = 1e9+7
N = 10000000
pw = [0] * N
def ini(c):
  pw[0] = 1 % mod
  for i in range(1,N):
    pw[i] = pw[i-1] * c % mod"""
"""
def YEILD():
  yield 'one'
  yield 'two'
  yield 'three'
generator = YEILD()
print(next(generator))
print(next(generator))
print(next(generator))
"""
"""def gcd_(a,b):
  if b == 0:#結局はc,0の最大公約数はcなのに
    return a
  return gcd_(a,a % b) # a = p * b + q"""
"""def extgcd(a,b,x,y):
  d = a
  if b!=0:
    d = extgcd(b,a%b,y,x)
    y -= (a//b) * x
    print(x,y)
  else:
    x = 1
    y = 0
  return d"""


def readInts():
    return list(map(int, input().split()))


mod = 10**9 + 7


def main():
    n = int(eval(input()))
    m = 1
    for _ in range(n, 1, -1):
        m *= _
    cnt = 1
    for i in range(2, n + 1):
        tmp = 1
        while m % i == 0:
            m //= i
            tmp += 1
        cnt *= tmp
    print((cnt % mod))


if __name__ == "__main__":
    main()

# from statistics import median
# import collections
# aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0]
# from itertools import combinations # (string,3) 3回
# from collections import deque
# import collections.defaultdict
# import bisect
#
#    d = m - k[i] - k[j]
#    if kk[bisect.bisect_right(kk,d) - 1] == d:
#
#
#
# pythonで無理なときは、pypyでやると正解するかも！！
#
#
mod = 10**9 + 7


def readInts():
    return list(map(int, input().split()))


def main():
    n = int(eval(input()))
    dic = {}
    for i in range(2, n + 1):
        a = i
        p = 2
        while p * p <= a:
            if a % p == 0:
                if p in dic:
                    dic[p] += 1
                else:
                    dic[p] = 1
                a //= p
            else:
                p += 1
        if a in dic:
            dic[a] += 1
        else:
            dic[a] = 1
    ans = 1
    # print(dic)
    for k, v in list(dic.items()):
        ans *= v + 1
    print((ans % mod))


if __name__ == "__main__":
    main()

+# from statistics import median +# import collections +# aa = collections.Counter(a) # list to list || .most_common(2)で最大の2個とりだせるお a[0][0] +# from itertools import combinations # (string,3) 3回 +# from collections import deque +# import collections.defaultdict +# import bisect -# Written by NoKnowledgeGG @YlePhan -# ('ω') +#    d = m - k[i] - k[j] +#    if kk[bisect.bisect_right(kk,d) - 1] == d: -# import math -# mod = 10**9+7 -# import itertools -# import fractions -# import numpy as np -# mod = 10**4 + 7 -"""def kiri(n,m): -  r_ = n / m -  if (r_ - (n // m)) > 0: -    return (n//m) + 1 -  else: -    return (n//m)""" -""" n! mod m 階乗 -mod = 1e9 + 7 -N = 10000000 -fac = [0] * N -def ini(): -  fac[0] = 1 % mod -  for i in range(1,N): -    fac[i] = fac[i-1] * i % mod""" -"""mod = 1e9+7 -N = 10000000 -pw = [0] * N -def ini(c): -  pw[0] = 1 % mod -  for i in range(1,N): -    pw[i] = pw[i-1] * c % mod""" -""" -def YEILD(): -  yield 'one' -  yield 'two' -  yield 'three' -generator = YEILD() -print(next(generator)) -print(next(generator)) -print(next(generator)) -""" -"""def gcd_(a,b): -  if b == 0:#結局はc,0の最大公約数はcなのに -    return a -  return gcd_(a,a % b) # a = p * b + q""" -"""def extgcd(a,b,x,y): -  d = a -  if b!=0: -    d = extgcd(b,a%b,y,x) -    y -= (a//b) * x -    print(x,y) -  else: -    x = 1 -    y = 0 -  return d""" +# +# +# pythonで無理なときは、pypyでやると正解するかも！！ +# +# +mod = 10**9 + 7 -mod = 10**9 + 7 - - -    m = 1 -    for _ in range(n, 1, -1): -        m *= _ -    cnt = 1 +    dic = {} -        tmp = 1 -        while m % i == 0: -            m //= i -            tmp += 1 -        cnt *= tmp -    print((cnt % mod)) +        a = i +        p = 2 +        while p * p <= a: +            if a % p == 0: +                if p in dic: +                    dic[p] += 1 +                else: +                    dic[p] = 1 +                a //= p +            else: +                p += 1 +        if a in dic: +            dic[a] += 1 +        else: +            dic[a] = 1 +    ans = 1 +    # print(dic) +    for k, v in list(dic.items()): +        ans *= v + 1 +    print((ans % mod))