class combnk_mod(object):
    # pが素数かつaとpが互いに素であるとき
    # フェルマーの小定理より以下が成り立つ.
    # 1 / a = a ** (p - 2) (mod p)
    # これを使って (1 / k!) mod p を計算する.
    def __init__(self, maxn, p):
        self.maxn = maxn
        self.p = p
        self.x = [1] # 分母にあたる数 1 / n! mod p
        self.y = [1] # 分子にあたる数. n! mod p
        for i in range(1, self.maxn + 1):
            self.x.append(self.x[-1] * pow(i, self.p - 2, self.p) % self.p)
            self.y.append(self.y[-1] * i % self.p)

    def combnk(self, n, k):
        if n < k:
            return 0
        return (self.x[n - k] * self.x[k] * self.y[n]) % self.p

if __name__ == '__main__':
    MOD = 10 ** 9 + 7
    n, k = map(int, input().split())
    C = combnk_mod(n, MOD)

    ans = 0
    for m in range(min(n, k + 1)):
        ans += C.combnk(n, m) * C.combnk(n - 1, n - m - 1) % MOD
        ans %= MOD
    print(ans) class combnk_mod(object):
    # pが素数かつaとpが互いに素であるとき
    # フェルマーの小定理より以下が成り立つ.
    # 1 / a = a ** (p - 2) (mod p)
    # これを使って (1 / k!) mod p を計算する.
    def __init__(self, maxn, p):
        self.maxn = maxn
        self.p = p
        self.x = [1] # 分母にあたる数 1 / n! mod p
        self.y = [1] # 分子にあたる数. n! mod p
        for i in range(1, self.maxn + 1):
            self.x.append(self.x[-1] * pow(i, self.p - 2, self.p) % self.p)
            self.y.append(self.y[-1] * i % self.p)

    def combnk(self, n, k):
        if n < k:
            return 0
        return (self.x[n - k] * self.x[k] * self.y[n]) % self.p combnk_mod def __init__(self, maxn, p):
        self.maxn = maxn
        self.p = p
        self.x = [1] # 分母にあたる数 1 / n! mod p
        self.y = [1] # 分子にあたる数. n! mod p
        for i in range(1, self.maxn + 1):
            self.x.append(self.x[-1] * pow(i, self.p - 2, self.p) % self.p)
            self.y.append(self.y[-1] * i % self.p)

     __init__ self.maxn = maxn self.maxn self maxn maxn self.p = p self.p self p p self.x = [1] self.x self x [1] 1 self.y = [1] self.y self y [1] 1 for i in range(1, self.maxn + 1):
            self.x.append(self.x[-1] * pow(i, self.p - 2, self.p) % self.p)
            self.y.append(self.y[-1] * i % self.p)

     i range(1, self.maxn + 1) range 1 self.maxn + 1 self.maxn self maxn 1 self.x.append(self.x[-1] * pow(i, self.p - 2, self.p) % self.p) self.x.append self.x self x append self.x[-1] * pow(i, self.p - 2, self.p) % self.p self.x[-1] * pow(i, self.p - 2, self.p) self.x[-1] self.x self x -1 pow(i, self.p - 2, self.p) pow i self.p - 2 self.p self p 2 self.p self p self.p self p self.y.append(self.y[-1] * i % self.p) self.y.append self.y self y append self.y[-1] * i % self.p self.y[-1] * i self.y[-1] self.y self y -1 i self.p self p self self maxn maxn p p def combnk(self, n, k):
        if n < k:
            return 0
        return (self.x[n - k] * self.x[k] * self.y[n]) % self.p combnk if n < k:
            return 0
         n < k n k return 0 0 return (self.x[n - k] * self.x[k] * self.y[n]) % self.p (self.x[n - k] * self.x[k] * self.y[n]) % self.p self.x[n - k] * self.x[k] * self.y[n] self.x[n - k] * self.x[k] self.x[n - k] self.x self x n - k n k self.x[k] self.x self x k self.y[n] self.y self y n self.p self p self self n n k k object if __name__ == '__main__':
    MOD = 10 ** 9 + 7
    n, k = map(int, input().split())
    C = combnk_mod(n, MOD)

    ans = 0
    for m in range(min(n, k + 1)):
        ans += C.combnk(n, m) * C.combnk(n - 1, n - m - 1) % MOD
        ans %= MOD
    print(ans) __name__ == '__main__' __name__ '__main__' MOD = 10 ** 9 + 7 MOD 10 ** 9 + 7 10 ** 9 10 9 7 n, k = map(int, input().split()) n map(int, input().split()) map int input().split() ().split () input split k C = combnk_mod(n, MOD) C combnk_mod(n, MOD) combnk_mod n MOD ans = 0 ans 0 for m in range(min(n, k + 1)):
        ans += C.combnk(n, m) * C.combnk(n - 1, n - m - 1) % MOD
        ans %= MOD
     m range(min(n, k + 1)) range min(n, k + 1) min n k + 1 k 1 ans += C.combnk(n, m) * C.combnk(n - 1, n - m - 1) % MOD ans C.combnk(n, m) * C.combnk(n - 1, n - m - 1) % MOD C.combnk(n, m) * C.combnk(n - 1, n - m - 1) C.combnk(n, m) C.combnk C combnk n m C.combnk(n - 1, n - m - 1) C.combnk C combnk n - 1 n 1 n - m - 1 n - m n m 1 MOD ans %= MOD ans MOD print(ans) print ans class combnk_mod(object):
    # pが素数かつaとpが互いに素であるとき
    # フェルマーの小定理より以下が成り立つ.
    # 1 / a = a ** (p - 2) (mod p)
    # これを使って (1 / k!) mod p を計算する.
    def __init__(self, maxn, p):
        self.maxn = maxn
        self.p = p
        self.x = [1] # 分母にあたる数 1 / n! mod p
        self.y = [1] # 分子にあたる数. n! mod p
        for i in range(1, self.maxn + 1):
            self.x.append(self.x[-1] * pow(i, self.p - 2, self.p) % self.p)
            self.y.append(self.y[-1] * i % self.p)

    def combnk(self, n, k):
        if n < k:
            return 0
        return (self.x[n - k] * self.x[k] * self.y[n]) % self.p class combnk_mod(object):
    # pが素数かつaとpが互いに素であるとき
    # フェルマーの小定理より以下が成り立つ.
    # 1 / a = a ** (p - 2) (mod p)
    # これを使って (1 / k!) mod p を計算する.
    def __init__(self, maxn, p):
        self.maxn = maxn
        self.p = p
        self.x = [1] # 分母にあたる数 1 / n! mod p
        self.y = [1] # 分子にあたる数. n! mod p
        for i in range(1, self.maxn + 1):
            self.x.append(self.x[-1] * pow(i, self.p - 2, self.p) % self.p)
            self.y.append(self.y[-1] * i % self.p)

    def combnk(self, n, k):
        if n < k:
            return 0
        return (self.x[n - k] * self.x[k] * self.y[n]) % self.p combnk_mod k = map(int, input().split()) map(int, input().split()) k ans %= MOD MOD ans MOD = 10 ** 9 + 7 10 ** 9 + 7 MOD ans += C.combnk(n, m) * C.combnk(n - 1, n - m - 1) % MOD C.combnk(n, m) * C.combnk(n - 1, n - m - 1) % MOD ans n, k = map(int, input().split()) map(int, input().split()) n ans = 0 0 ans C = combnk_mod(n, MOD) combnk_mod(n, MOD) C
class combnk_mod(object):
    # pが素数かつaとpが互いに素であるとき
    # フェルマーの小定理より以下が成り立つ.
    # 1 / a = a ** (p - 2) (mod p)
    # これを使って (1 / k!) mod p を計算する.
    def __init__(self, maxn, p):
        self.maxn = maxn
        self.p = p
        self.x = [1] # 分母にあたる数 1 / n! mod p
        self.y = [1] # 分子にあたる数. n! mod p
        for i in range(1, self.maxn + 1):
            self.x.append(self.x[-1] * pow(i, self.p - 2, self.p) % self.p)
            self.y.append(self.y[-1] * i % self.p)

    def combnk(self, n, k):
        if n < k:
            return 0
        return (self.x[n - k] * self.x[k] * self.y[n]) % self.p

if __name__ == '__main__':
    MOD = 10 ** 9 + 7
    n, k = map(int, input().split())
    C = combnk_mod(n, MOD)

    ans = 0
    for m in range(min(n, k + 1)):
        ans += C.combnk(n, m) * C.combnk(n - 1, n - m - 1) % MOD
        ans %= MOD
    print(ans)
