n, k = list(map(int, input().split()))

mod = 10**9 + 7

# xの逆元を求める。フェルマーの小定理より、 x の逆元は x ^ (mod - 2) に等しい。計算時間はO(log(mod))程度。
def modinv(x):
    return pow(x, mod-2, mod)

# 二項係数の左側の数字の最大値を max_len　とする。nとかだと他の変数と被りそうなので。
# factori_table = [1, 1, 2, 6, 24, 120, ...] 要は factori_table[n] = n!
# 計算時間はO(max_len * log(mod))

max_len = 2 * n - 1 #適宜変更する

factori_table = [1] * (max_len + 1)
factori_inv_table = [1] * (max_len + 1)
for i in range(1, max_len + 1):
    factori_table[i] = factori_table[i-1] * (i) % mod
    factori_inv_table[i] = modinv(factori_table[i])

def binomial_coefficients(n, k):
    # n! / (k! * (n-k)! )
    if k <= 0 or k >= n:
        return 1
    return (factori_table[n] * factori_inv_table[k] * factori_inv_table[n-k]) % mod

if k >= n-1:
    # nHn = 2n-1 C n
    print(binomial_coefficients(2 * n - 1, n))
else:
    # 移動がk回←→ 人数0の部屋がk個以下
    # 人数0の部屋がちょうどj個のものは
    # nCj(人数0の部屋の選び方) * jH(n-j) (余剰のj人を残りの部屋に入れる)
    ans = 0
    for j in range(k+1):
        if j == 0:
            ans += 1
        else:
            ans += binomial_coefficients(n, j) * binomial_coefficients(n-1, j) 
            ans %= mod
    print(ans) n, k = list(map(int, input().split())) n list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split k mod = 10**9 + 7 mod 10**9 + 7 10**9 10 9 7 def modinv(x):
    return pow(x, mod-2, mod)

# 二項係数の左側の数字の最大値を max_len　とする。nとかだと他の変数と被りそうなので。
# factori_table = [1, 1, 2, 6, 24, 120, ...] 要は factori_table[n] = n!
# 計算時間はO(max_len * log(mod)) modinv return pow(x, mod-2, mod) pow(x, mod-2, mod) pow x mod-2 mod 2 mod x x max_len = 2 * n - 1 max_len 2 * n - 1 2 * n 2 n 1 factori_table = [1] * (max_len + 1) factori_table [1] * (max_len + 1) [1] 1 max_len + 1 max_len 1 factori_inv_table = [1] * (max_len + 1) factori_inv_table [1] * (max_len + 1) [1] 1 max_len + 1 max_len 1 for i in range(1, max_len + 1):
    factori_table[i] = factori_table[i-1] * (i) % mod
    factori_inv_table[i] = modinv(factori_table[i]) i range(1, max_len + 1) range 1 max_len + 1 max_len 1 factori_table[i] = factori_table[i-1] * (i) % mod factori_table[i] factori_table i factori_table[i-1] * (i) % mod factori_table[i-1] * (i) factori_table[i-1] factori_table i-1 i 1 i mod factori_inv_table[i] = modinv(factori_table[i]) factori_inv_table[i] factori_inv_table i modinv(factori_table[i]) modinv factori_table[i] factori_table i def binomial_coefficients(n, k):
    # n! / (k! * (n-k)! )
    if k <= 0 or k >= n:
        return 1
    return (factori_table[n] * factori_inv_table[k] * factori_inv_table[n-k]) % mod binomial_coefficients if k <= 0 or k >= n:
        return 1
     k <= 0 or k >= n k <= 0 k 0 k >= n k n return 1 1 return (factori_table[n] * factori_inv_table[k] * factori_inv_table[n-k]) % mod (factori_table[n] * factori_inv_table[k] * factori_inv_table[n-k]) % mod factori_table[n] * factori_inv_table[k] * factori_inv_table[n-k] factori_table[n] * factori_inv_table[k] factori_table[n] factori_table n factori_inv_table[k] factori_inv_table k factori_inv_table[n-k] factori_inv_table n-k n k mod n n k k if k >= n-1:
    # nHn = 2n-1 C n
    print(binomial_coefficients(2 * n - 1, n))
else:
    # 移動がk回←→ 人数0の部屋がk個以下
    # 人数0の部屋がちょうどj個のものは
    # nCj(人数0の部屋の選び方) * jH(n-j) (余剰のj人を残りの部屋に入れる)
    ans = 0
    for j in range(k+1):
        if j == 0:
            ans += 1
        else:
            ans += binomial_coefficients(n, j) * binomial_coefficients(n-1, j) 
            ans %= mod
    print(ans) k >= n-1 k n-1 n 1 print(binomial_coefficients(2 * n - 1, n)) print binomial_coefficients(2 * n - 1, n) binomial_coefficients 2 * n - 1 2 * n 2 n 1 n ans = 0 ans 0 for j in range(k+1):
        if j == 0:
            ans += 1
        else:
            ans += binomial_coefficients(n, j) * binomial_coefficients(n-1, j) 
            ans %= mod
     j range(k+1) range k+1 k 1 if j == 0:
            ans += 1
        else:
            ans += binomial_coefficients(n, j) * binomial_coefficients(n-1, j) 
            ans %= mod
     j == 0 j 0 ans += 1 ans 1 ans += binomial_coefficients(n, j) * binomial_coefficients(n-1, j) ans binomial_coefficients(n, j) * binomial_coefficients(n-1, j) binomial_coefficients(n, j) binomial_coefficients n j binomial_coefficients(n-1, j) binomial_coefficients n-1 n 1 j ans %= mod ans mod print(ans) print ans ans += binomial_coefficients(n, j) * binomial_coefficients(n-1, j) binomial_coefficients(n, j) * binomial_coefficients(n-1, j) ans def binomial_coefficients(n, k):
    # n! / (k! * (n-k)! )
    if k <= 0 or k >= n:
        return 1
    return (factori_table[n] * factori_inv_table[k] * factori_inv_table[n-k]) % mod def binomial_coefficients(n, k):
    # n! / (k! * (n-k)! )
    if k <= 0 or k >= n:
        return 1
    return (factori_table[n] * factori_inv_table[k] * factori_inv_table[n-k]) % mod binomial_coefficients ans = 0 0 ans mod = 10**9 + 7 10**9 + 7 mod factori_table = [1] * (max_len + 1) [1] * (max_len + 1) factori_table ans %= mod mod ans k = list(map(int, input().split())) list(map(int, input().split())) k n, k = list(map(int, input().split())) list(map(int, input().split())) n factori_inv_table = [1] * (max_len + 1) [1] * (max_len + 1) factori_inv_table def modinv(x):
    return pow(x, mod-2, mod)

# 二項係数の左側の数字の最大値を max_len　とする。nとかだと他の変数と被りそうなので。
# factori_table = [1, 1, 2, 6, 24, 120, ...] 要は factori_table[n] = n!
# 計算時間はO(max_len * log(mod)) def modinv(x):
    return pow(x, mod-2, mod)

# 二項係数の左側の数字の最大値を max_len　とする。nとかだと他の変数と被りそうなので。
# factori_table = [1, 1, 2, 6, 24, 120, ...] 要は factori_table[n] = n!
# 計算時間はO(max_len * log(mod)) modinv max_len = 2 * n - 1 2 * n - 1 max_len ans += 1 1 ans
n, k = list(map(int, input().split()))

mod = 10**9 + 7

# xの逆元を求める。フェルマーの小定理より、 x の逆元は x ^ (mod - 2) に等しい。計算時間はO(log(mod))程度。
def modinv(x):
    return pow(x, mod-2, mod)

# 二項係数の左側の数字の最大値を max_len　とする。nとかだと他の変数と被りそうなので。
# factori_table = [1, 1, 2, 6, 24, 120, ...] 要は factori_table[n] = n!
# 計算時間はO(max_len * log(mod))

max_len = 2 * n - 1 #適宜変更する

factori_table = [1] * (max_len + 1)
factori_inv_table = [1] * (max_len + 1)
for i in range(1, max_len + 1):
    factori_table[i] = factori_table[i-1] * (i) % mod
    factori_inv_table[i] = modinv(factori_table[i])

def binomial_coefficients(n, k):
    # n! / (k! * (n-k)! )
    if k <= 0 or k >= n:
        return 1
    return (factori_table[n] * factori_inv_table[k] * factori_inv_table[n-k]) % mod

if k >= n-1:
    # nHn = 2n-1 C n
    print(binomial_coefficients(2 * n - 1, n))
else:
    # 移動がk回←→ 人数0の部屋がk個以下
    # 人数0の部屋がちょうどj個のものは
    # nCj(人数0の部屋の選び方) * jH(n-j) (余剰のj人を残りの部屋に入れる)
    ans = 0
    for j in range(k+1):
        if j == 0:
            ans += 1
        else:
            ans += binomial_coefficients(n, j) * binomial_coefficients(n-1, j) 
            ans %= mod
    print(ans)
