n,k=map(int,input().split())
mod=pow(10,9)+7
# max:comb(2*n-1,n-1)

def cmb(n, r, mod):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return g1[n] * g2[r] * g2[n-r] % mod
g1 = [1, 1] 
g2 = [1, 1] 
inverse = [0, 1]
for i in range( 2, 2*n + 1 ):
    g1.append( ( g1[-1] * i ) % mod )
    inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )
    g2.append( (g2[-1] * inverse[-1]) % mod )

if k>=n-1:
  print(cmb(2*n-1,n-1,mod))
else:
  ans=0
  for i in range(k+1):
    ans+=cmb(n,i,mod)*cmb(n-1,i,mod)
    ans%=mod
  print(ans) n,k=map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split k mod=pow(10,9)+7 mod pow(10,9)+7 pow(10,9) pow 10 9 7 def cmb(n, r, mod):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return g1[n] * g2[r] * g2[n-r] % mod cmb if ( r<0 or r>n ):
        return 0
     r<0 or r>n r<0 r 0 r>n r n return 0 0 r = min(r, n-r) r min(r, n-r) min r n-r n r return g1[n] * g2[r] * g2[n-r] % mod g1[n] * g2[r] * g2[n-r] % mod g1[n] * g2[r] * g2[n-r] g1[n] * g2[r] g1[n] g1 n g2[r] g2 r g2[n-r] g2 n-r n r mod n n r r mod mod g1 = [1, 1] g1 [1, 1] 1 1 g2 = [1, 1] g2 [1, 1] 1 1 inverse = [0, 1] inverse [0, 1] 0 1 for i in range( 2, 2*n + 1 ):
    g1.append( ( g1[-1] * i ) % mod )
    inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )
    g2.append( (g2[-1] * inverse[-1]) % mod ) i range( 2, 2*n + 1 ) range 2 2*n + 1 2*n 2 n 1 g1.append( ( g1[-1] * i ) % mod ) g1.append g1 append ( g1[-1] * i ) % mod g1[-1] * i g1[-1] g1 -1 i mod inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod ) inverse.append inverse append ( -inverse[mod % i] * (mod//i) ) % mod -inverse[mod % i] * (mod//i) -inverse[mod % i] inverse[mod % i] inverse mod % i mod i mod//i mod i mod g2.append( (g2[-1] * inverse[-1]) % mod ) g2.append g2 append (g2[-1] * inverse[-1]) % mod g2[-1] * inverse[-1] g2[-1] g2 -1 inverse[-1] inverse -1 mod if k>=n-1:
  print(cmb(2*n-1,n-1,mod))
else:
  ans=0
  for i in range(k+1):
    ans+=cmb(n,i,mod)*cmb(n-1,i,mod)
    ans%=mod
  print(ans) k>=n-1 k n-1 n 1 print(cmb(2*n-1,n-1,mod)) print cmb(2*n-1,n-1,mod) cmb 2*n-1 2*n 2 n 1 n-1 n 1 mod ans=0 ans 0 for i in range(k+1):
    ans+=cmb(n,i,mod)*cmb(n-1,i,mod)
    ans%=mod
   i range(k+1) range k+1 k 1 ans+=cmb(n,i,mod)*cmb(n-1,i,mod) ans cmb(n,i,mod)*cmb(n-1,i,mod) cmb(n,i,mod) cmb n i mod cmb(n-1,i,mod) cmb n-1 n 1 i mod ans%=mod ans mod print(ans) print ans n,k=map(int,input().split()) map(int,input().split()) n ans=0 0 ans ans+=cmb(n,i,mod)*cmb(n-1,i,mod) cmb(n,i,mod)*cmb(n-1,i,mod) ans def cmb(n, r, mod):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return g1[n] * g2[r] * g2[n-r] % mod def cmb(n, r, mod):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return g1[n] * g2[r] * g2[n-r] % mod cmb mod=pow(10,9)+7 pow(10,9)+7 mod inverse = [0, 1] [0, 1] inverse k=map(int,input().split()) map(int,input().split()) k g2 = [1, 1] [1, 1] g2 g1 = [1, 1] [1, 1] g1 ans%=mod mod ans
n,k=map(int,input().split())
mod=pow(10,9)+7
# max:comb(2*n-1,n-1)

def cmb(n, r, mod):
    if ( r<0 or r>n ):
        return 0
    r = min(r, n-r)
    return g1[n] * g2[r] * g2[n-r] % mod
g1 = [1, 1] 
g2 = [1, 1] 
inverse = [0, 1]
for i in range( 2, 2*n + 1 ):
    g1.append( ( g1[-1] * i ) % mod )
    inverse.append( ( -inverse[mod % i] * (mod//i) ) % mod )
    g2.append( (g2[-1] * inverse[-1]) % mod )

if k>=n-1:
  print(cmb(2*n-1,n-1,mod))
else:
  ans=0
  for i in range(k+1):
    ans+=cmb(n,i,mod)*cmb(n-1,i,mod)
    ans%=mod
  print(ans)