output_description: Print n+1 lines. The k-th line should contain the number of the different
  subsequences of the given sequence with length k, modulo 10^9+7.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      n
      a_1 a_2 ... a_{n+1}
attempt: class BinomialCoefficient:
      def __init__(self, N, mod):
          """
          Preprocess for calculating binomial coefficients nCr (0 <= r <= n, 0 <= n <= N)
          over the finite field Z/(mod)Z.
          Input:
              N (int): maximum n
              mod (int): a prime number. The order of the field Z/(mod)Z over which nCr is calculated.
          """
          self.mod = mod
          self.fact = {i: None for i in range(N + 1)}  # n!
          self.inverse = {
              i: None for i in range(1, N + 1)
          }  # inverse of n in the field Z/(MOD)Z
          self.fact_inverse = {
              i: None for i in range(N + 1)
          }  # inverse of n! in the field Z/(MOD)Z
  
          # preprocess
          self.fact[0] = self.fact[1] = 1
          self.fact_inverse[0] = self.fact_inverse[1] = 1
          self.inverse[1] = 1
          for i in range(2, N + 1):
              self.fact[i] = i * self.fact[i - 1] % self.mod
              q, r = divmod(self.mod, i)
              self.inverse[i] = (-(q % self.mod) * self.inverse[r]) % self.mod
              self.fact_inverse[i] = self.inverse[i] * self.fact_inverse[i - 1] % self.mod
  
      def binom(self, n, r):
          if n < r or n < 0 or r < 0:
              return 0
          else:
              return (
                  self.fact[n]
                  * (self.fact_inverse[r] * self.fact_inverse[n - r] % self.mod)
                  % self.mod
              )
  
  
  N = int(input())
  A = list(map(int, input().split()))
  MOD = 10**9 + 7
  
  dup_num = sum(A) - N * (N + 1) // 2
  dup_num_idx = sorted([i + 1 for i, a in enumerate(A) if a == dup_num])
  l, r = dup_num_idx[0], dup_num_idx[1]
  
  bc = BinomialCoefficient(N + 1, MOD)
  for k in range(1, N + 2):
      print((bc.binom(N + 1, k) - bc.binom(N + 1 - (r - l + 1), k - 1)) % MOD)
  
problem_description: Statement
  
  You are given an integer sequence of length n+1, a_1,a_2,...,a_{n+1}, which
  consists of the n integers 1,...,n. It is known that each of the n integers
  1,...,n appears at least once in this sequence.
  
  For each integer k=1,...,n+1, find the number of the different subsequences
  (not necessarily contiguous) of the given sequence with length k, modulo
  10^9+7.
samples: [{"input": "3\n    1 2 1 3", "output": "3\n    5\n    4\n    1\n    \n\nThere are three subsequences with length 1: 1 and 2 and 3.\n\nThere are five subsequences with length 2: 1,1 and 1,2 and 1,3 and 2,1 and\n2,3.\n\nThere are four subsequences with length 3: 1,1,3 and 1,2,1 and 1,2,3 and\n2,1,3.\n\nThere is one subsequence with length 4: 1,2,1,3.\n\n* * *"}, {"input": "1\n    1 1", "output": "1\n    1\n    \n\nThere is one subsequence with length 1: 1.\n\nThere is one subsequence with length 2: 1,1.\n\n* * *"}, {"input": "32\n    29 19 7 10 26 32 27 4 11 20 2 8 16 23 5 14 6 12 17 22 18 30 28 24 15 1 25 3 13 21 19 31 9", "output": "32\n    525\n    5453\n    40919\n    237336\n    1107568\n    4272048\n    13884156\n    38567100\n    92561040\n    193536720\n    354817320\n    573166440\n    818809200\n    37158313\n    166803103\n    166803103\n    37158313\n    818809200\n    573166440\n    354817320\n    193536720\n    92561040\n    38567100\n    13884156\n    4272048\n    1107568\n    237336\n    40920\n    5456\n    528\n    33\n    1\n    \n\nBe sure to print the numbers modulo 10^9+7."}]