def cmb(n, r, p):
    if (r < 0) or (n < r):
        return 0
    r = min(r, n - r)
    return fact[n] * factinv[r] * factinv[n-r] % p

p = 10 ** 9 + 7
N = 10 ** 6  # N は必要分だけ用意する
fact = [1, 1]
factinv = [1, 1]
inv = [0, 1]
 
for i in range(2, N + 1):
    fact.append((fact[-1] * i) % p)
    inv.append((-inv[p % i] * (p // i)) % p)
    factinv.append((factinv[-1] * inv[-1]) % p)

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

ans = 0

if k >= n-1:
    print(cmb(2*n-1,n,p))
else:

    for i in range(k+1):
        ###i:0人の部屋の数
        x = cmb(n,i,p)###0人の部屋の選び方
        y = cmb(n-1,i,p)
            ###0人でないn-i個の部屋にn人が入る時の人数の組み合わせ
            ###各部屋に1人以上入るので, それを上回る分についてのみ考える
            ###すなわち, n-(n-i)=i人についての組み合わせを考える
            ###人間i人, 仕切りn-i-1個
        ans += (x*y)%p
        ans %= p

    print(ans)

 def cmb(n, r, p):
    if (r < 0) or (n < r):
        return 0
    r = min(r, n - r)
    return fact[n] * factinv[r] * factinv[n-r] % p cmb if (r < 0) or (n < r):
        return 0
     (r < 0) or (n < r) r < 0 r 0 n < r n r return 0 0 r = min(r, n - r) r min(r, n - r) min r n - r n r return fact[n] * factinv[r] * factinv[n-r] % p fact[n] * factinv[r] * factinv[n-r] % p fact[n] * factinv[r] * factinv[n-r] fact[n] * factinv[r] fact[n] fact n factinv[r] factinv r factinv[n-r] factinv n-r n r p n n r r p p p = 10 ** 9 + 7 p 10 ** 9 + 7 10 ** 9 10 9 7 N = 10 ** 6 N 10 ** 6 10 6 fact = [1, 1] fact [1, 1] 1 1 factinv = [1, 1] factinv [1, 1] 1 1 inv = [0, 1] inv [0, 1] 0 1 for i in range(2, N + 1):
    fact.append((fact[-1] * i) % p)
    inv.append((-inv[p % i] * (p // i)) % p)
    factinv.append((factinv[-1] * inv[-1]) % p) i range(2, N + 1) range 2 N + 1 N 1 fact.append((fact[-1] * i) % p) fact.append fact append (fact[-1] * i) % p fact[-1] * i fact[-1] fact -1 i p inv.append((-inv[p % i] * (p // i)) % p) inv.append inv append (-inv[p % i] * (p // i)) % p -inv[p % i] * (p // i) -inv[p % i] inv[p % i] inv p % i p i p // i p i p factinv.append((factinv[-1] * inv[-1]) % p) factinv.append factinv append (factinv[-1] * inv[-1]) % p factinv[-1] * inv[-1] factinv[-1] factinv -1 inv[-1] inv -1 p n,k = map(int,input().split()) n map(int,input().split()) map int input().split() ().split () input split k ans = 0 ans 0 if k >= n-1:
    print(cmb(2*n-1,n,p))
else:

    for i in range(k+1):
        ###i:0人の部屋の数
        x = cmb(n,i,p)###0人の部屋の選び方
        y = cmb(n-1,i,p)
            ###0人でないn-i個の部屋にn人が入る時の人数の組み合わせ
            ###各部屋に1人以上入るので, それを上回る分についてのみ考える
            ###すなわち, n-(n-i)=i人についての組み合わせを考える
            ###人間i人, 仕切りn-i-1個
        ans += (x*y)%p
        ans %= p

    print(ans) k >= n-1 k n-1 n 1 print(cmb(2*n-1,n,p)) print cmb(2*n-1,n,p) cmb 2*n-1 2*n 2 n 1 n p for i in range(k+1):
        ###i:0人の部屋の数
        x = cmb(n,i,p)###0人の部屋の選び方
        y = cmb(n-1,i,p)
            ###0人でないn-i個の部屋にn人が入る時の人数の組み合わせ
            ###各部屋に1人以上入るので, それを上回る分についてのみ考える
            ###すなわち, n-(n-i)=i人についての組み合わせを考える
            ###人間i人, 仕切りn-i-1個
        ans += (x*y)%p
        ans %= p

     i range(k+1) range k+1 k 1 x = cmb(n,i,p) x cmb(n,i,p) cmb n i p y = cmb(n-1,i,p) y cmb(n-1,i,p) cmb n-1 n 1 i p ans += (x*y)%p ans (x*y)%p x*y x y p ans %= p ans p print(ans) print ans p = 10 ** 9 + 7 10 ** 9 + 7 p n,k = map(int,input().split()) map(int,input().split()) n N = 10 ** 6 10 ** 6 N fact = [1, 1] [1, 1] fact x = cmb(n,i,p) cmb(n,i,p) x inv = [0, 1] [0, 1] inv ans %= p p ans def cmb(n, r, p):
    if (r < 0) or (n < r):
        return 0
    r = min(r, n - r)
    return fact[n] * factinv[r] * factinv[n-r] % p def cmb(n, r, p):
    if (r < 0) or (n < r):
        return 0
    r = min(r, n - r)
    return fact[n] * factinv[r] * factinv[n-r] % p cmb y = cmb(n-1,i,p) cmb(n-1,i,p) y ans += (x*y)%p (x*y)%p ans factinv = [1, 1] [1, 1] factinv k = map(int,input().split()) map(int,input().split()) k ans = 0 0 ans
def cmb(n, r, p):
    if (r < 0) or (n < r):
        return 0
    r = min(r, n - r)
    return fact[n] * factinv[r] * factinv[n-r] % p

p = 10 ** 9 + 7
N = 10 ** 6  # N は必要分だけ用意する
fact = [1, 1]
factinv = [1, 1]
inv = [0, 1]
 
for i in range(2, N + 1):
    fact.append((fact[-1] * i) % p)
    inv.append((-inv[p % i] * (p // i)) % p)
    factinv.append((factinv[-1] * inv[-1]) % p)

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

ans = 0

if k >= n-1:
    print(cmb(2*n-1,n,p))
else:

    for i in range(k+1):
        ###i:0人の部屋の数
        x = cmb(n,i,p)###0人の部屋の選び方
        y = cmb(n-1,i,p)
            ###0人でないn-i個の部屋にn人が入る時の人数の組み合わせ
            ###各部屋に1人以上入るので, それを上回る分についてのみ考える
            ###すなわち, n-(n-i)=i人についての組み合わせを考える
            ###人間i人, 仕切りn-i-1個
        ans += (x*y)%p
        ans %= p

    print(ans)


