//                                    .........
//                      .7>?7n. .(wWWVyyyVyVyyyWWAw-.
//                     J~::::<HyyyyyyyyyyyVyyyyyyyZZuXV<.
//             .?<(((JXF:::::+KW#ZuZyyyyyyZZXZZuuuZOvvrw.?.
//           ,!-vvrwD:;XaJ++jWUWSw_OuVVTV7XzXkzzvo(wrrrrrw+_i 
//         .>.zrrvrd>jdXvvvvrrwWOtrrrwzvvrrrwHkrrrrvrvrvrrvw+?. 
//        .!(rrvrvwXm0vrrwAOrtwRtttrrrrrtttttW0rrrvrvrvrvrrvro.i 
//       .~JrvrrvwVW0<zrwXKtltwRtttttrtrrttttX0rrrvrrvrrvrvrrrw.1
//       <JrrvvvQVWS<czrwWZllOuRttttrtrrtttttXktrvrvrvrrrrZ  (rr/>
//     .<jZ<wrrwHWSwx-JwXKO1lOu$tttrrtrrrrttcJ0rrrrvrwXOltt< .rrw-i
//    .jdvI-jCwXWSrrrvvwW0o(jwZrrOrrrrrzzvrZ>JVtrrrrrtwXOlltrrrrrI,;
//   ,+XHvrvrrdHHvrvvvvZWrttrwKCw<jvuzu>?zz:.JZ=lOroJrtwSllltrvvwrl(.
// .~JZU0rvvvvUWSrrvvzzZStrrrdC1duZZZZZXwuuv<dOllwXrvvrtwklllrrrdRr-> 
//(_7  JrrrrrwHWXrvvzzuuStltOr Jwzzuuuuzzvvv1Izl=lZwrvrtOXOlltrrZ4vI-- 
//     kwyvrrdpKrrvvzzzw0lllZ  (ZttOtrrttttrd>~1==ldOrrrtZklltrrO(kr{>
//    .kdSvvrdWSvvwwuuzdI??1{   z=====llllllw<  1z=lXOrrttXOtlrrr(Rrl(
//    .0d+rrvXWXvwWXuuwOI??v    .z>??????==z$~   ?z=lXOtttdZttrrvzSvw(_
//    .0W(rrvXHXvwWuuwZjVTO=!???<O&x>>+I???d! ..(?79UUUVU6wkrrrrrv0vr>) 
//    .kW(rvvwKXvdWuXw$(z?z       1z1>>zz?1>        1zOvOtrXzuzvvrvrvlt
//    .SW(rrvdWqvwHurd:.I?;     ...~?<<<_<<      ..  _1I(wrdXZuvvrrvv01
//     OWrrrrdWHvwHzwK  1v~.(ggggJ.?!         (<(.JggJ.. .TdKZuzvwkvrXj 
//     .WDzvrdHWwwHzdH.  (MHM###MkTU_         .UTWM##NMMN, ?Huuuw(WvrX( 
//      O>zrrwWHkwHzWW{.dY!jNWML .r_!          !jMd@F  k?Wo juuuIJWvvW(
//        (zrzVWKdMwb.:(% .H@HNM@@N             W@HNMagM. C_,kzzCdWvvfz
//         1wvXWWXHX>_>   .hJHXZWHN             XJWUWWHM:   (Rzz1Hkvw\(-
//          1wdWvHHW<>_    ?U0zzXX=             ,WVCO4y=    ydzZJ 4wd 
//           (wf[?Wr1>(.                ..                 .3JuO\ .SI
//            (Wb zH, .__-_____-                  -__~__.-..~.k2   ,\
//             .4  4WHeo~~~~~~~_.                .~~:~<::~.dqH?     !
//                  4fWTe           .1WW&&&&W1          .(OkP 
//                   4f ,n.         \Y       Y1       .d!.H: 
//                    ?   Wx.        &_    _ 2      .dMK  ?
//                         4 ?a..         ~      ..JWDOq%
//                            (HkMNmx.... ....(&kHP,kk\.K                         
//                          ...?qHNWB:::::::::WHHH-.dK
//                       .J>:jz77<:(C:::::::::O_:~?7f;?3(.
//                    ..z>::::u-~::::~::~:::::(<:::(3::::?-
//                 .,C-::::::<:?x<1+-_~~:~~:(J++?!(3~<:<(J=_<.. 
//               .?   ._1.....~~(z-.._(-1+,.....-J!.._(v!      ?1,
//             .<     !   ?1--...~?iv>___~(T+..J=_(Jv^            <.
//            .=      _       ?7u-((JXJ-((JJZ6+JwY!_      _        (.
//           .}                  ?1&J-:<Z<<<:<+=_        . _.       : 
//           / :   .                 _d7COZW>~           (.  .      ..
//          .: !   (                 .>.~(:d             (~    .    !-
//          (  ~   (                 .z777TT             ..    _   . :
//          :  ~   <_                J<<<<<j_            ._    :   { ( 
//         .   !   >_                >.....({            (_    <  .  (.
//         -   ~   >_               ,~.~..~v)            <     <  ;  .; 
//        .       .>                <..~.._Il            ~     ( .    >
//        .       .~               .>.~..~(Iz                  ( .    ( 
//        <       -~               ,_..~..(>j                  .      . 
//        {       <.               <..~..~(<j.                 ..      _
//                >.               >..~...z:(_                  _      <
//       .        >.              .<.~..~_C(<}                  }      . 
//       _       .~.              .~..~..(>(:>                  }       _
//       :       (~.              ._..~..(<(+>                  >       ~
//       ~       <~_                ??<<!!                      <       .

import java.util.*

fun main(args : Array<String>) {
    val sc = Scanner(System.`in`)
    val k = sc.nextInt()
    val s = sc.nextInt()

    var result = 0
    for (x in 0..k) {
        for (y in 0..k) {
            if (0 <= s - (x + y) <= k){
                result += 1
            }
        }
    }
    print(result)
}


import math
def prime(x):
  p = {}
  cnt = 2
  Flag = True
  while Flag:
    last = math.ceil(x ** 0.5) 
    if cnt > last:
      break
    for i in range(cnt, last + 1):
      if x % i == 0:
        x //= i
        p[i] = 1
        cnt = i + 2
        while x % i == 0:
          x //= i
          p[i] += 1
        cnt = i + 1
        break
      if i == last:
        Flag = False
  if x != 1:
    p[x] = 1
  return p

N = int(input())
R = {}
MOD = 10 ** 9 + 7
for i in range(1, N + 1):
  t = prime(i)
  for i in t.keys():
    if i not in R:
      R[i] = t[i]
    else:
      R[i] += t[i]
      
ans = 1
for i in R.values():
  ans = ans * (i + 1) % MOD

print(ans)

### FIXED CODE ###

##                                    .........
##                      .7>?7n. .(wWWVyyyVyVyyyWWAw-.
##                     J~::::<HyyyyyyyyyyyVyyyyyyyZZuXV<.
##             .?<(((JXF:::::+KW#ZuZyyyyyyZZXZZuuuZOvvrw.?.
##           ,!-vvrwD:;XaJ++jWUWSw_OuVVTV7XzXkzzvo(wrrrrrw+_i 
##         .>.zrrvrd>jdXvvvvrrwWOtrrrwzvvrrrwHkrrrrvrvrvrrvw+?. 
##        .!(rrvrvwXm0vrrwAOrtwRtttrrrrrtttttW0rrrvrvrvrvrrvro.i 
##       .~JrvrrvwVW0<zrwXKtltwRtttttrtrrttttX0rrrvrrvrrvrvrrrw.1
##       <JrrvvvQVWS<czrwWZllOuRttttrtrrtttttXktrvrvrvrrrrZ  (rr/>
##     .<jZ<wrrwHWSwx-JwXKO1lOu$tttrrtrrrrttcJ0rrrrvrwXOltt< .rrw-i
##    .jdvI-jCwXWSrrrvvwW0o(jwZrrOrrrrrzzvrZ>JVtrrrrrtwXOlltrrrrrI,;
##   ,+XHvrvrrdHHvrvvvvZWrttrwKCw<jvuzu>?zz:.JZ=lOroJrtwSllltrvvwrl(.
## .~JZU0rvvvvUWSrrvvzzZStrrrdC1duZZZZZXwuuv<dOllwXrvvrtwklllrrrdRr-> 
##(_7  JrrrrrwHWXrvvzzuuStltOr Jwzzuuuuzzvvv1Izl=lZwrvrtOXOlltrrZ4vI-- 
##     kwyvrrdpKrrvvzzzw0lllZ  (ZttOtrrttttrd>~1==ldOrrrtZklltrrO(kr{>
##    .kdSvvrdWSvvwwuuzdI??1{   z=====llllllw<  1z=lXOrrttXOtlrrr(Rrl(
##    .0d+rrvXWXvwWXuuwOI??v    .z>??????==z$~   ?z=lXOtttdZttrrvzSvw(_
##    .0W(rrvXHXvwWuuwZjVTO=!???<O&x>>+I???d! ..(?79UUUVU6wkrrrrrv0vr>) 
##    .kW(rvvwKXvdWuXw$(z?z       1z1>>zz?1>        1zOvOtrXzuzvvrvrvlt
##    .SW(rrvdWqvwHurd:.I?;     ...~?<<<_<<      ..  _1I(wrdXZuvvrrvv01
##     OWrrrrdWHvwHzwK  1v~.(ggggJ.?!         (<(.JggJ.. .TdKZuzvwkvrXj 
##     .WDzvrdHWwwHzdH.  (MHM###MkTU_         .UTWM##NMMN, ?Huuuw(WvrX( 
##      O>zrrwWHkwHzWW{.dY!jNWML .r_!          !jMd@F  k?Wo juuuIJWvvW(
##        (zrzVWKdMwb.:(% .H@HNM@@N             W@HNMagM. C_,kzzCdWvvfz
##         1wvXWWXHX>_>   .hJHXZWHN             XJWUWWHM:   (Rzz1Hkvw\(-
##          1wdWvHHW<>_    ?U0zzXX=             ,WVCO4y=    ydzZJ 4wd 
##           (wf[?Wr1>(.                ..                 .3JuO\ .SI
##            (Wb zH, .__-_____-                  -__~__.-..~.k2   ,\
##             .4  4WHeo~~~~~~~_.                .~~:~<::~.dqH?     !
##                  4fWTe           .1WW&&&&W1          .(OkP 
##                   4f ,n.         \Y       Y1       .d!.H: 
##                    ?   Wx.        &_    _ 2      .dMK  ?
##                         4 ?a..         ~      ..JWDOq%
##                            (HkMNmx.... ....(&kHP,kk\.K                         
##                          ...?qHNWB:::::::::WHHH-.dK
##                       .J>:jz77<:(C:::::::::O_:~?7f;?3(.
##                    ..z>::::u-~::::~::~:::::(<:::(3::::?-
##                 .,C-::::::<:?x<1+-_~~:~~:(J++?!(3~<:<(J=_<.. 
##               .?   ._1.....~~(z-.._(-1+,.....-J!.._(v!      ?1,
##             .<     !   ?1--...~?iv>___~(T+..J=_(Jv^            <.
##            .=      _       ?7u-((JXJ-((JJZ6+JwY!_      _        (.
##           .}                  ?1&J-:<Z<<<:<+=_        . _.       : 
##           / :   .                 _d7COZW>~           (.  .      ..
##          .: !   (                 .>.~(:d             (~    .    !-
##          (  ~   (                 .z777TT             ..    _   . :
##          :  ~   <_                J<<<<<j_            ._    :   { ( 
##         .   !   >_                >.....({            (_    <  .  (.
##         -   ~   >_               ,~.~..~v)            <     <  ;  .; 
##        .       .>                <..~.._Il            ~     ( .    >
##        .       .~               .>.~..~(Iz                  ( .    ( 
##        <       -~               ,_..~..(>j                  .      . 
##        {       <.               <..~..~(<j.                 ..      _
##                >.               >..~...z:(_                  _      <
##       .        >.              .<.~..~_C(<}                  }      . 
##       _       .~.              .~..~..(>(:>                  }       _
##       :       (~.              ._..~..(<(+>                  >       ~
##       ~       <~_                ??<<!!                      <       .
import math
def prime(x):
  p = {}
  cnt = 2
  Flag = True
  while Flag:
    last = math.ceil(x ** 0.5) 
    if cnt > last:
      break
    for i in range(cnt, last + 1):
      if x % i == 0:
        x //= i
        p[i] = 1
        cnt = i + 2
        while x % i == 0:
          x //= i
          p[i] += 1
        cnt = i + 1
        break
      if i == last:
        Flag = False
  if x != 1:
    p[x] = 1
  return p

N = int(input())
R = {}
MOD = 10 ** 9 + 7
for i in range(1, N + 1):
  t = prime(i)
  for i in t.keys():
    if i not in R:
      R[i] = t[i]
    else:
      R[i] += t[i]
      
ans = 1
for i in R.values():
  ans = ans * (i + 1) % MOD

print(ans)