output_description: Print the minimum total price of two different bells.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      a b c
attempt: #!/usr/bin/env python3
  
  import sys
  
  # import time
  # import math
  # import numpy as np
  # import scipy.sparse.csgraph as cs            # csgraph_from_dense(ndarray, null_value=inf), bellman_ford(G, return_predecessors=True), dijkstra, floyd_warshall
  # import random                                # random, uniform, randint, randrange, shuffle, sample
  # import string                                # ascii_lowercase, ascii_uppercase, ascii_letters, digits, hexdigits
  # import re                                    # re.compile(pattern) => ptn obj; p.search(s), p.match(s), p.finditer(s) => match obj; p.sub(after, s)
  # from bisect import bisect_left, bisect_right # bisect_left(a, x, lo=0, hi=len(a)) returns i such that all(val<x for val in a[lo:i]) and all(val>-=x for val in a[i:hi]).
  # from collections import deque                # deque class. deque(L): dq.append(x), dq.appendleft(x), dq.pop(), dq.popleft(), dq.rotate()
  # from collections import defaultdict          # subclass of dict. defaultdict(facroty)
  # from collections import Counter              # subclass of dict. Counter(iter): c.elements(), c.most_common(n), c.subtract(iter)
  # from datetime import date, datetime          # date.today(), date(year,month,day) => date obj; datetime.now(), datetime(year,month,day,hour,second,microsecond) => datetime obj; subtraction => timedelta obj
  # from datetime.datetime import strptime       # strptime('2019/01/01 10:05:20', '%Y/%m/%d/ %H:%M:%S') returns datetime obj
  # from datetime import timedelta               # td.days, td.seconds, td.microseconds, td.total_seconds(). abs function is also available.
  # from copy import copy, deepcopy              # use deepcopy to copy multi-dimentional matrix without reference
  # from functools import reduce                 # reduce(f, iter[, init])
  # from functools import lru_cache              # @lrucache ...arguments of functions should be able to be keys of dict (e.g. list is not allowed)
  # from heapq import heapify, heappush, heappop # built-in list. heapify(L) changes list in-place to min-heap in O(n), heappush(heapL, x) and heappop(heapL) in O(lgn).
  # from heapq import nlargest, nsmallest        # nlargest(n, iter[, key]) returns k-largest-list in O(n+klgn).
  # from itertools import count, cycle, repeat   # count(start[,step]), cycle(iter), repeat(elm[,n])
  # from itertools import groupby                # [(k, list(g)) for k, g in groupby('000112')] returns [('0',['0','0','0']), ('1',['1','1']), ('2',['2'])]
  # from itertools import starmap                # starmap(pow, [[2,5], [3,2]]) returns [32, 9]
  # from itertools import product, permutations  # product(iter, repeat=n), permutations(iter[,r])
  # from itertools import combinations, combinations_with_replacement
  # from itertools import accumulate             # accumulate(iter[, f])
  # from operator import itemgetter              # itemgetter(1), itemgetter('key')
  # from fractions import gcd                    # for Python 3.4 (previous contest @AtCoder)
  
  
  def main():
      mod = 1000000007  # 10^9+7
      inf = float("inf")  # sys.float_info.max = 1.79...e+308
      # inf = 2 ** 64 - 1             # (for fast JIT compile in PyPy) 1.84...e+19
      sys.setrecursionlimit(10**6)  # 1000 -> 1000000
  
      def input():
          return sys.stdin.readline().rstrip()
  
      def ii():
          return int(input())
  
      def mi():
          return map(int, input().split())
  
      def mi_0():
          return map(lambda x: int(x) - 1, input().split())
  
      def lmi():
          return list(map(int, input().split()))
  
      def lmi_0():
          return list(map(lambda x: int(x) - 1, input().split()))
  
      def li():
          return list(input())
  
      def find_duplicate(L):
          n = len(L)
          table = [None] * n
          for i, num in enumerate(L):
              if table[num] is not None:
                  return table[num], i
              else:
                  table[num] = i
  
      def make_factorial_table(size, mod):
          """
          fact_mod[i] は i! % mod を表す。fact_mod[0] ~ facto_mod[size] まで計算可能なテーブルを返す
          >>> make_factorial_table(20, 10**9+7)
          [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 227020758, 178290591, 674358851, 789741546, 425606191, 660911389, 557316307, 146326063]
          """
          fact_mod = [1] * (size + 1)
          for i in range(1, size + 1):
              fact_mod[i] = (fact_mod[i - 1] * i) % mod
          return fact_mod
  
      def combination(n, r, mod, fact_table):
          """
          フェルマーの小定理
          a ^ p-1 ≡ 1 (mod p)
          a ^ p-2 ≡ 1/a (mod p) (逆元)
          nCr = (n!) / ((n-r)! * r!) だが、mod p の世界ではこの分母を逆元を用いて計算しておくことが可能
  
          >>> m = 1000000007
          >>> fact_table = make_factorial_table(100, m)
          >>> combination(10, 5, m, fact_table)
          252
          >>> combination(100, 50, m, fact_table)
          538992043
          """
          if r > n:
              return 0
          numerator = fact_table[n]
          denominator = (fact_table[n - r] * fact_table[r]) % mod
          # pow はすでに繰り返し二乗法で効率的に実装されている
          return (numerator * pow(denominator, mod - 2, mod)) % mod
  
      n = ii()
      L = lmi_0()
      i, j = find_duplicate(L)
      fact = make_factorial_table(n + 1, mod)
  
      for l in range(1, n + 2):
          print(
              (
                  combination(n + 1, l, mod, fact)
                  - combination(i + n - j, l - 1, mod, fact)
              )
              % mod
          )
  
  
  if __name__ == "__main__":
      main()
  
problem_description: Statement
  
  Snuke is buying a bicycle. The bicycle of his choice does not come with a
  bell, so he has to buy one separately.
  
  He has very high awareness of safety, and decides to buy two bells, one for
  each hand.
  
  The store sells three kinds of bells for the price of a, b and c yen (the
  currency of Japan), respectively. Find the minimum total price of two
  different bells.
samples: [{"input": "700 600 780", "output": "1300\n    \n\n  * Buying a 700-yen bell and a 600-yen bell costs 1300 yen.\n  * Buying a 700-yen bell and a 780-yen bell costs 1480 yen.\n  * Buying a 600-yen bell and a 780-yen bell costs 1380 yen.\n\nThe minimum among these is 1300 yen.\n\n* * *"}, {"input": "10000 10000 10000", "output": "20000\n    \n\nBuying any two bells costs 20000 yen."}]