MOD = 10**9+7



def mod_pow(x, n):

  if x==0: return 1

  res = 1

  while n > 0:

    if n&1:

      res = (res*x)%MOD

    x = (x*x)%MOD

    n >>= 1

  return res



fact, invfact = [0]*(10**5+2), [0]*(10**5+2)

fact[0], invfact[0] = 1, 1

for i in range(1, 10**5+2):

  fact[i] = (fact[i-1]*i)%MOD

  invfact[i] = mod_pow(fact[i], MOD-2)%MOD



def comb(n, r):

  if n<r or n==0 or r==0: return 0

  return (((fact[n]*invfact[r])%MOD)*invfact[n-r])%MOD



from collections import defaultdict

n = int(eval(input()))

a = list(map(int, input().split()))

d = defaultdict(int)

for i, ele in enumerate(a):

  if d[ele] == 0:

    d[ele]= i+1

  else:

    l = d[ele]

    r = i+1



print(n)

for k in range(2, n+2):

  print(((comb(n+1, k)-comb(l-1+n-r+1, k-1))%MOD))
# Pythonの組み込み関数powを使ったバージョン

MOD = 10**9+7



fact, invfact = [0]*(10**5+2), [0]*(10**5+2)

fact[0], invfact[0] = 1, 1



for i in range(1, 10**5+2):

  fact[i] = (fact[i-1]*i)%MOD

  invfact[i] = pow(fact[i], MOD-2, MOD)



def mod_comb(n, r):

  if n<r or n==0 or r==0: return 0

  return (((fact[n]*invfact[r])%MOD)*invfact[n-r])%MOD



from collections import defaultdict

n = int(eval(input()))

a = list(map(int, input().split()))

d = defaultdict(int)

for i, ele in enumerate(a):

  if d[ele] == 0:

    d[ele]= i+1

  else:

    l = d[ele]

    r = i+1



print(n)

for k in range(2, n+2):

  print(((mod_comb(n+1, k)-mod_comb(l-1+n-r+1, k-1))%MOD))
MOD = 10**9 + 7


def mod_pow(x, n):
    if x == 0:
        return 1
    res = 1
    while n > 0:
        if n & 1:
            res = (res * x) % MOD
        x = (x * x) % MOD
        n >>= 1
    return res


fact, invfact = [0] * (10**5 + 2), [0] * (10**5 + 2)
fact[0], invfact[0] = 1, 1
for i in range(1, 10**5 + 2):
    fact[i] = (fact[i - 1] * i) % MOD
    invfact[i] = mod_pow(fact[i], MOD - 2) % MOD


def comb(n, r):
    if n < r or n == 0 or r == 0:
        return 0
    return (((fact[n] * invfact[r]) % MOD) * invfact[n - r]) % MOD


from collections import defaultdict

n = int(eval(input()))
a = list(map(int, input().split()))
d = defaultdict(int)
for i, ele in enumerate(a):
    if d[ele] == 0:
        d[ele] = i + 1
    else:
        l = d[ele]
        r = i + 1
print(n)
for k in range(2, n + 2):
    print(((comb(n + 1, k) - comb(l - 1 + n - r + 1, k - 1)) % MOD))

# Pythonの組み込み関数powを使ったバージョン
MOD = 10**9 + 7
fact, invfact = [0] * (10**5 + 2), [0] * (10**5 + 2)
fact[0], invfact[0] = 1, 1
for i in range(1, 10**5 + 2):
    fact[i] = (fact[i - 1] * i) % MOD
    invfact[i] = pow(fact[i], MOD - 2, MOD)


def mod_comb(n, r):
    if n < r or n == 0 or r == 0:
        return 0
    return (((fact[n] * invfact[r]) % MOD) * invfact[n - r]) % MOD


from collections import defaultdict

n = int(eval(input()))
a = list(map(int, input().split()))
d = defaultdict(int)
for i, ele in enumerate(a):
    if d[ele] == 0:
        d[ele] = i + 1
    else:
        l = d[ele]
        r = i + 1
print(n)
for k in range(2, n + 2):
    print(((mod_comb(n + 1, k) - mod_comb(l - 1 + n - r + 1, k - 1)) % MOD))

+# Pythonの組み込み関数powを使ったバージョン - - -def mod_pow(x, n): -    if x == 0: -        return 1 -    res = 1 -    while n > 0: -        if n & 1: -            res = (res * x) % MOD -        x = (x * x) % MOD -        n >>= 1 -    return res - - -    invfact[i] = mod_pow(fact[i], MOD - 2) % MOD +    invfact[i] = pow(fact[i], MOD - 2, MOD) -def comb(n, r): +def mod_comb(n, r): -    print(((comb(n + 1, k) - comb(l - 1 + n - r + 1, k - 1)) % MOD)) +    print(((mod_comb(n + 1, k) - mod_comb(l - 1 + n - r + 1, k - 1)) % MOD))