output_description: Print the number of possible combinations of numbers of people in the n rooms
  now, modulo (10^9 + 7).
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      n k
attempt: #!/usr/bin/env python3
  # %%
  import numpy as np
  
  # %%
  stdin = open(0)
  
  # %%
  N, K = map(int, stdin.read().split())
  
  # %%
  MOD = 10**9 + 7
  
  # %%
  
  
  def cumprod(A, MOD=MOD):
      L = len(A)
      Lsq = int(L**0.5 + 1)
      A = np.resize(A, Lsq**2).reshape(Lsq, Lsq)
      for n in range(1, Lsq):
          A[:, n] *= A[:, n - 1]
          A[:, n] %= MOD
      for n in range(1, Lsq):
          A[n] *= A[n - 1, -1]
          A[n] %= MOD
      return A.ravel()[:L]
  
  
  def make_fact(U, MOD=MOD):
      x = np.arange(U, dtype=np.int64)
      x[0] = 1
      fact = cumprod(x, MOD)
      x = np.arange(U, 0, -1, dtype=np.int64)
      x[0] = pow(int(fact[-1]), MOD - 2, MOD)
      fact_inv = cumprod(x, MOD)[::-1]
      fact.flags.writeable = False
      fact_inv.flags.writeable = False
      return fact, fact_inv
  
  
  # %%
  fact, fact_inv = make_fact(N + 10)
  
  # %%
  if K >= N:
      K = N - 1
  x = fact[N] * fact_inv[0 : K + 1] % MOD * fact_inv[N - K : N + 1][::-1] % MOD
  y = fact[N - 1] * fact_inv[0 : K + 1] % MOD * fact_inv[N - K - 1 : N][::-1] % MOD
  answer = np.sum(x * y % MOD) % MOD
  
  # %%
  print(answer)
  
  # %%
  
problem_description: Statement
  
  There is a building with n rooms, numbered 1 to n.
  
  We can move from any room to any other room in the building.
  
  Let us call the following event a **move** : a person in some room i goes to
  another room j~ (i \neq j).
  
  Initially, there was one person in each room in the building.
  
  After that, we know that there were exactly k moves happened up to now.
  
  We are interested in the number of people in each of the n rooms now. How many
  combinations of numbers of people in the n rooms are possible?
  
  Find the count modulo (10^9 + 7).
samples: [{"input": "3 2", "output": "10\n    \n\nLet c_1, c_2, and c_3 be the number of people in Room 1, 2, and 3 now,\nrespectively. There are 10 possible combination of (c_1, c_2, c_3):\n\n  * (0, 0, 3)\n  * (0, 1, 2)\n  * (0, 2, 1)\n  * (0, 3, 0)\n  * (1, 0, 2)\n  * (1, 1, 1)\n  * (1, 2, 0)\n  * (2, 0, 1)\n  * (2, 1, 0)\n  * (3, 0, 0)\n\nFor example, (c_1, c_2, c_3) will be (0, 1, 2) if the person in Room 1 goes to\nRoom 2 and then one of the persons in Room 2 goes to Room 3.\n\n* * *"}, {"input": "200000 1000000000", "output": "607923868\n    \n\nPrint the count modulo (10^9 + 7).\n\n* * *"}, {"input": "15 6", "output": "22583772"}]