output_description: Print N integers. The t-th (1 \le t \le N) of them should be the answer for
  the case K=t.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      A_1 A_2 \ldots A_N
attempt: import sys
  
  input = sys.stdin.readline
  
  
  def I():
      return int(input())
  
  
  def MI():
      return map(int, input().split())
  
  
  def LI():
      return list(map(int, input().split()))
  
  
  """
  とりあえず，数字ではなく，数字の出現回数C[i]を持つ．
  
  Kが変化すると色々と変わるので，Kごとに見ようとすると割と大変そう，1つのkごとにO(N)すらかけられない，というか計算大変そう．
  (カードがT種類あるとして，k>Tは全部0だったりする．Kの区間に対して一気に答えを出す方法はありそう．)
  
  食べる回数をmとして，mごとに最大のKを求める．
  
  m回食べるということは，各数字につき最大m回までしか食べられないということ
  食べられる枚数の総数はΣ(min(m,C[i]))．このときの最大のKは，総数//m
  
  C[i]を昇順に並べておけば二分探索で
  min(m,C[i])=C[i]の範囲がわかり，累積和をとっておればこの区間の合計がO(1)で求まる
  """
  
  
  def main():
      import bisect
  
      N = I()
      A = LI()
      from collections import defaultdict
  
      dd = defaultdict(int)
  
      for i in range(N):
          dd[A[i]] += 1
  
      L = []
      for k, v in dd.items():
          L.append(v)
  
      L.sort()
      nl = len(L)
      S = [0] * (nl + 1)
      for i in range(nl):
          S[i + 1] = S[i] + L[i]
  
      ans = [0] * (N + 1)
  
      for m in range(1, N + 1):
          temp = 0
          num = bisect.bisect_left(L, m)
          temp += S[num]
          temp += (nl - num) * m
  
          maxk = temp // m
          ans[maxk] = max(ans[maxk], m)
          # print(m,temp,maxk)
  
      # print(ans)
  
      M = 0
      for i in range(N, -1, -1):
          M = max(M, ans[i])
          ans[i] = M
  
      for i in range(1, N + 1):
          print(ans[i])
  
  
  main()
  
problem_description: Statement
  
  Takahashi has N cards. The i-th of these cards has an integer A_i written on
  it.
  
  Takahashi will choose an integer K, and then repeat the following operation
  some number of times:
  
    * Choose exactly K cards such that the integers written on them are all different, and eat those cards. (The eaten cards disappear.)
  
  For each K = 1,2, \ldots, N, find the maximum number of times Takahashi can do
  the operation.
samples: [{"input": "3\n    2 1 2", "output": "3\n    1\n    0\n    \n\nFor K = 1, we can do the operation as follows:\n\n  * Choose the first card to eat.\n  * Choose the second card to eat.\n  * Choose the third card to eat.\n\nFor K = 2, we can do the operation as follows:\n\n  * Choose the first and second cards to eat.\n\nFor K = 3, we cannot do the operation at all. Note that we cannot choose the\nfirst and third cards at the same time.\n\n* * *"}, {"input": "5\n    1 2 3 4 5", "output": "5\n    2\n    1\n    1\n    1\n    \n\n* * *"}, {"input": "4\n    1 3 3 3", "output": "4\n    1\n    0\n    0"}]