N=int(input())

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



BN=[0 for i in range(N)]

for i in AN:

    BN[i-1] += 1

BN.sort()



LN = [0 for i in range(N)]

s = 0

j = 0

try:

    for X in range(1, N+1):

        while j<N and  BN[j] < X:

            s += BN[j]

            j += 1

        LN[X-1] = (s + X*(N - j)) / X

except IndexError:

    pass



KN = [0 for i in range(N)]

for i in range(len(LN)):

    KN[LN[i]-1] = i+1



for i in range(len(KN)-2, -1, -1):

    if KN[i] == 0:

        KN[i] = KN[i+1]



for i in KN:

    print((str(i)))
#!/usr/bin/pypy

N=int(input())

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



BN=[0 for i in range(N)]

for i in AN:

    BN[i-1] += 1

BN.sort()



LN = [0 for i in range(N)]

s = 0

j = 0

try:

    for X in range(1, N+1):

        while j<N and  BN[j] < X:

            s += BN[j]

            j += 1

        LN[X-1] = int((s + X*(N - j)) / X)

except IndexError:

    pass



KN = [0 for i in range(N)]

for i in range(len(LN)):

    KN[LN[i]-1] = i+1



for i in range(len(KN)-2, -1, -1):

    if KN[i] == 0:

        KN[i] = KN[i+1]



for i in KN:

    print((str(i)))
N = int(input())
AN = list(map(int, input().split()))
BN = [0 for i in range(N)]
for i in AN:
    BN[i - 1] += 1
BN.sort()
LN = [0 for i in range(N)]
s = 0
j = 0
try:
    for X in range(1, N + 1):
        while j < N and BN[j] < X:
            s += BN[j]
            j += 1
        LN[X - 1] = (s + X * (N - j)) / X
except IndexError:
    pass
KN = [0 for i in range(N)]
for i in range(len(LN)):
    KN[LN[i] - 1] = i + 1
for i in range(len(KN) - 2, -1, -1):
    if KN[i] == 0:
        KN[i] = KN[i + 1]
for i in KN:
    print((str(i)))

#!/usr/bin/pypy
N = int(input())
AN = list(map(int, input().split()))
BN = [0 for i in range(N)]
for i in AN:
    BN[i - 1] += 1
BN.sort()
LN = [0 for i in range(N)]
s = 0
j = 0
try:
    for X in range(1, N + 1):
        while j < N and BN[j] < X:
            s += BN[j]
            j += 1
        LN[X - 1] = int((s + X * (N - j)) / X)
except IndexError:
    pass
KN = [0 for i in range(N)]
for i in range(len(LN)):
    KN[LN[i] - 1] = i + 1
for i in range(len(KN) - 2, -1, -1):
    if KN[i] == 0:
        KN[i] = KN[i + 1]
for i in KN:
    print((str(i)))

+#!/usr/bin/pypy -        LN[X - 1] = (s + X * (N - j)) / X +        LN[X - 1] = int((s + X * (N - j)) / X)