Problem:


Score : 600 points

Problem 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.

Constraints

 1 \le N \le 3 \times 10^5 

 1 \le A_i \le N 

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 \ldots A_N

Output

Print N integers.
The t-th (1 \le t \le N) of them should be the answer for the case K=t.

Sample Input 1

3
2 1 2

Sample Output 1

3
1
0

For K = 1, we can do the operation as follows:

Choose the first card to eat.

Choose the second card to eat.

Choose the third card to eat.

For K = 2, we can do the operation as follows:

Choose the first and second cards to eat.

For K = 3, we cannot do the operation at all. Note that we cannot choose the first and third cards at the same time.

Sample Input 2

5
1 2 3 4 5

Sample Output 2

5
2
1
1
1

Sample Input 3

4
1 3 3 3

Sample Output 3

4
1
0
0



Sample input:
3
2 1 2


Sample output:
3
1
0

Submission status: Wrong Answer

Solution code:
import collections
from heapq import *
from bisect import *

N=int(input())
A=list(map(int,input().split()))
c=collections.Counter(A)
l=list(c.values())
h=[]
for i in range(len(l)):
    heappush(h,l[i])
h2=[]
for i in range(len(l)):
    heappush(h2,heappop(h))
m=[0]*(N+1)
for i in range(N):
    br=bisect_right(h2,N//(i+1))
    if m[br] != 0:
        sbr = m[br]
    else:
        sbr=sum(h2[:br])
        m[br]=sbr
    if i+1 == len(h2):
        print(h2[0])
    else:
        print(sbr//(i+1-(len(h2)-br)))

Submission status: Wrong Answer

Solution code:
import collections
from heapq import *
from bisect import *

N=int(input())
A=list(map(int,input().split()))
c=collections.Counter(A)
l=list(c.values())
h=[]
for i in range(len(l)):
    heappush(h,l[i])
h2=[]
for i in range(len(l)):
    heappush(h2,heappop(h))
m=[0]*(N+1)
for i in range(N):
    br=bisect_right(h2,-(-N//(i+1))-1)
    if m[br] != 0:
        sbr = m[br]
    else:
        sbr=sum(h2[:br])
        m[br]=sbr
    if i+1-(len(h2)-br)==0:
        print(1)
    else:
        print(sbr//(i+1-(len(h2)-br)))

Submission status: Wrong Answer

Solution code:
n=int(input())
l=list(map(int,input().split()))
l.sort()
f=1
mf=1
mp=0
for i in range(n-1):
    if l[i]!=l[i+1]:
        if mf<f:
            mf=f
            mp=i
        f=1
    else:
        f+=1
if mf<f:
    mf=f
    mp=n-1
s=len(set(l))
d=n-mf
for i in range(1,n+1):
    if i==1:
        print(n)
    else:
        if s<i:
            print(0)
        else:
            u=n//i
            e=mf//i
            print(min(u,d//i,e))

Submission status: Wrong Answer

Solution code:
from collections import Counter
from heapq import heapify, heappop, heappush

N = int(input())
A = list(map(int, input().split()))
a = list(Counter(A).values())

for i in range(1, N + 1):
    if len(a) < i:
        print(0)
    else:
        hq = a[:i]
        rest = list(reversed(a[i:]))
        heapify(hq)
        while rest:
            t = heappop(hq) + rest.pop()
            heappush(hq, t)
        print(heappop(hq))

Submission status: Wrong Answer

Solution code:

n=int(input())
l=list(map(int,input().split()))
l.sort()
f=1
mf=1
mp=0
for i in range(n-1):
    if l[i]!=l[i+1]:
        if mf<f:
            mf=f
            mp=i
        f=1
    else:
        f+=1
if mf<f:
    mf=f
    mp=n-1
s=len(set(l))
d=n//mf
for i in range(1,n+1):
    if i==1:
        print(n)
    else:
        if s<i:
            print(0)
        else:
            u=n//i
            print(min(u,d))

Submission status: Wrong Answer

Solution code:
from collections import Counter
from heapq import heapify, heappop, heappush

N = int(input())
A = list(map(int, input().split()))
a = list(Counter(A).values())

for i in range(1, N + 1):
    if len(a) < i:
        print(0)
    else:
        hq = a[:i]
        rest = a[i:]
        heapify(hq)
        while rest:
            t = heappop(hq) + rest.pop()
            heappush(hq, t)
        print(heappop(hq))

Submission status: Wrong Answer

Solution code:
#x個の列を取り出せる最大の長さf(x)を考える
#dの導入

import bisect
n = int(input())
a = list(map(int, input().split()))

c = [0]*(n+1)

for i in range(n):
    c[a[i]] += 1

d = [0]*(n+1)
for i in range(n):
    d[c[i]] += 1

sum1 = 0
sum2 =sum(d)-d[0]
ans = []
for x in range(1,n+1):
    sum1 += x*d[x]
    sum2 -= d[x]
    ans.append((sum1+x*sum2)//x)
ans.sort()
for i in range(1,n+1):
    j = bisect.bisect_left(ans,i)
    print(n-j)

Submission status: Wrong Answer

Solution code:
import subprocess
import gzip, base64, os
import stat

gz = b'H4sIALAcq10C/+19C3hTVbbwSdKW8GoKAlZFKBixlaE0tEDri5YSOEdSqLQggnBI05RW06YmJ6U4CGhbJYY6jON1vHMdZZy5jjP/PBjHcVARWh4t+EAExQc+8IEmVKS+oPLKv9be+6TnnORUGOe/3/d/343SnbXO2nuvtfbaa6/9yD5r7I6ZRoOBkz9G7gYOIcPIQgIXMvwGf4wEcPlcf/g7mhvJpQCcrKAr5ApVaQ8rWk7NjM4E/5LgX76RwvnGQlU6ktHJqUGRJnPKT6EqzbudU6UclxHLh7y+XUuxb9cuU6XpSRSf00+dz8jy9bB8PYxeTjkjp0pl+ZLYv3KGL2dyyekMRjdDQY+f0iNSJX7PrKRwZmWhKn2I0T2kyXcT5Evhzv+TxtJ5rD49vWQy/uVUboeJnpqKKXkTPZUTPDV1gcYJjflTJkzJy/Z7sycRntIY7aw581V6TGc8D2M2gM8vv+XR7zPu/a71bE7mH7i8h5IWj2u4CZ9dw/Jhk7TUpVUnjelvNHB53FooGp9dD/+mw7+n38t9c8DdG8Rfu17c9UBtdPe6FteIN8o2Nq2/pfCrCV+JS1MzGnIy7W862o6Oaxv2yKDix0bWb14p3P5sX/p5GRgYmgD/vDExXkpOjB9hSIxPi1mY+jNaB/+GTvmVOvinucT4B3Xoy1MS4wfp4F06+LqkxPhSnXon6ZQzWkfPj+rgR+mUk6ujzzk65QR0ynlHh368Dv1cnXp/odMuX+jgr9Wp9zc6djVUh59ZOvSLdejf17F/s045rTrtvlEH/xud8lfr6KFGR5/TdPi36uCX6ejzEh36/9CRt1yH/xKdcg7oyJWhU84uHb0t1sH/TYfPb3T6XaqOHp7TKf8fOnzO1JF3u069A6CcMdyl3CYfG3cZ/nsjxXf7l6nGp9Rkiuckil/I8F+zcjhWzlqG/yOrd98lhap6s5l+Nl6qxk+CcoZAOYdZ+bKNOZMongssU417bQZa71qfmv4EK79eU+/UZFrORp+6HCsr/zDDp7EH2Um0/GWSWq71TP+Fl6nL52Ac9kuVrvHjceydwoni8lpvneiXnD5JFDnxxgZxnnt5jV9y+4o9Tr/f7edEobxErHT7GLq8pNjjrXOXOys8bvos8ROxXqr2uZ2V4u3ulaILvkmIdDU6xSqf2y26G13ueqnGW8eJi+aU+fOg2npbjog1+SWfd6V93uwyp+Cy4+PZZdJkl7Sy3g2wLRdoVtRUuuvEmroayd4ABGWSbaooQnXeFWIF1Oj0eLyuBprTb8utqqmrFKtqfH5J9FbZS2e7amtJpd7JVZ6Av1ouYoqyCJfTL5ES4EGuL1An1dQCzz6f1zfDpsjgBV7dzlpgxe/2SYILsDZXtdMnSj5njeQHfu3zsIQKp7/GJVML5WJ5jmgvmyKWzi7LFT1MLaRyUnIBKLO2pg40RlnwF9tQHX7Cd3k5FFjQW2BN3XJWbILaiQrtVI78Gq8fZPO78wRQHBMD8FNAWU6PuxehEZhVHuMEFKhoG4KqVWEkxh3Ul1Ajk10et9NnhyeTRAF4gn8SsQ4QfVKO3AreADaX6HPWLXdDlXJrTiGtCaYpiXVedYPi46mKxtY8LxeAM6XZIUIjK2uKCrDoOrAByVWtME/grUx019ZLK8Hk66HPeH3O5W7ZQm2TqdS0SSoCVfrtkQs0qGxxeWOjWO/2+b11Tk8NFNuQwxQYY3PGJNYqflBWiQiKu12EEitl7BRnfb27rpIICZhKT2kDNIVUALITLUoo54IL4o60Q54L9B+fF8xMJy9mq1tRSzJPZbUrdFcAqqNOwF5bqzKWmFlSUYn+SQcGWo2X8ObWByS7i1nphfUBsFJsbWJwc0Fltd5KN5FvDngdqLTRWVHTYEPz89eILnR9Inoc6NlVXrvSR9lAEtY/PUzoOI0D8VSfG1xCA4irsWuPu265VE3Njdm1tm8Ws644W2kJeSuqnZK22VnHxGZHz15LnTp8W+6C9kLIxonz61Zgp5jn9gdq3fjQRcmqvFAGB4qTvB6uyu2t4qqWuyU/5yLqxwfAq9wikruxRuJq3bWu2nqS1K/kqlwer9/N1VJ6QNZ6G9DJYxVsSKl11tRx6PC5WcXFYm52DjfLIUwvFidl2/JiXydlT+aKFy4smi6Ituxcil64EKjzsgtUkM2mBOk8kf4nfzfBvyTyn5F8o3859j1JkSOJS2bPjTDTNJLZZhKjSmH0Kex5P5aaFfTx/6WQ8drAHUnuna+Vjls5EGekd6bI82GgTKHPc3Be/vOHU3AV4B6GC1xa0x/5aI3RJ5EYQI5vDvz19mScGf8now+uyTLiCsfvGOzs+aURZ8pPM1jKetCMMrez8nq8NE5I0a6LsLgimc2T5c9aBX66Mk5X4Gco8JsU+GsU+MMKvF2Bl+M3xF+rmiD34q9TxuMK/Exl+Qq8KuIJ9OKLFOj0eorvp4ixSHymwBsV+EwF3qTA5yjwSQp8vgKv1HOhAt9PgecVeLNyHqzA91fgFyrwA5T6UeAHKvDVCvwgBb5egR+swDcq8KlKe1DgLQr8OgU+TYHfoMAPUeAfUeCVcf9GBf4iBf4pBb5YaW8K/HAFfrMCP0KBb1PgL1bgdyvw6Qr8PgX+UgX+bQX+BqUdKvCXKfBhBX6k0v4V+MsV+B4FfpTSnu/oxY9WzrMVeOW8N02BH6O0fwV+rNL+FfgrlPavwFuV9q/AX6m0fwV+nNL+FfhpSvtX4DOV9q/AZyntX4G/Wmn/Cvx4pf0r8D9R2r8CP0Fp/wp8ttL+FfiJSvtX4HOU9q/Az1LavwJvU9q/Aj9Jaf8KfK7S/hX4PKX9K/CTlfavwE9R2r8CP1Vp/wp8vtL+FfgCZTs2fWHmQ8mv3pzB8S1tUnJ4MUHuNO+gz6OTt8Oj6JU74a9ldCF8Q7gaH0UOR+Fz5fMIo0uO7CPw0wijK460EfiPCKMLjmwi8BMIo+uNbCTwrxBGlxvZQOAHEcbhLrKWwPcjjGxH6gl8D8LociPLCHwnwuhqI6UE9iGMLjZSSODbEEbXGskhcAXC6FIjGQRehDC60kgagechjC40whH4RoTRdUa6zyE8HeE0Ij+Br0F4CJGfwJMQHkrkJ/DVCF9E5CfwWISHEfkJfCnCw4n8BB6K8AgiP4EHIHwxkZ/ARoTTifwEPrUA4EuI/AT+GuFLifwEPorwZUR+An+M8EgiP4HfRfhyIj+B9yM8ishP4JcQHk3kP4vwdoQziPwEfh7hMUR+Aj+N8FgiP4H/iPAVRH4CP4GwlchP4F8hfCWRn8APIjyOyE/g+xG+ishP4HsQziTyE/hOhLOI/AT2IXw1kZ/AtyE8nshP4AqEf0LkJ/AihCcQ+Qk8D+FsIj+Bb0R4IpH/DGl/hHOI/AS+BmEbkZ/AkxCeROQn8NUI5xL5CTwW4TwiP4EvRXgykZ/AQxGeQuQn8ACEpxL5CWxEOJ/ID3DptiSImMJH4Os2XJvaiuDzYejtYRuwv3CH7ZgQfH0pH/yYb/q0u7Rc6Gxbu6yQ4zvb00jS2T2ykAsfhOzfWkZDYLj5JGSdz0/ohoRv6knlg0dWGJfs2Ex8BTiIb5dsw0fRw5bRZOlqc7eCvr3HBPR8cDvffnQab9jHv94TgMzP08z7ITMf7KD5P2b5116/aCEYU2DIfMgZXg0CLulIngUowzc70N/wTddn3gQE0qgYC8Pmb+uuhdqCR6L7lkR+Clkso7mIn6alYez6trZFO6qIPPOLbi5aUDS/qLyMv/uLzfBsG3adrRhmhjmQmg/usNtO8C2HpEy+9SErVrL1IdRM8MMwthffWYxL4qCpYhImCcEPFCVsPY0l7OJbjknFmL0Nnwx2Yvbj4TtIdjvJxnc2WzfILjf4J+tGgrOb0U92zrAS39yVoaKC7xvlQcMQBBrbMUfwGetTuAjdckJKEqIzzY6gZK1W8JN9WinRBL51vXU3PkQJnh9A6v4wXHM6oVhY+Cb46gjVApnHutB+v1uprf2nolEh2KnAtJ0itdmOYWWTiizP7mzqmR8wCdFdqIt9tDpH8Mvw8gQ18sH3+dCt1mo+dC0fCnDhYlJ8P1TlAD5aYrY0Pw3KETpnkVyQklyO4BaiIaFpGmdpfhjcUkez9RGcE4RAQ81tfAgYD1ixgMAoPmTn+NbG8HM42eALXrO0rLuUI01z7/fAEDB9BR+dbQ5czodMarrudKqqpUjXusW6DhlufYZUHX5uPAIUGT5zHVJC3XzoUUoGxU4kxWbFFdvJiu2HxUL7rmPtuy0jplPP9wqd/oRHqfjW63aRkDSNPDN1FJuJFpk202PatBNOSvnWVdbGGLcDx6tsftD3zEI+jdk8D3reepLZ/JbvExnHe4oSXuphJURjJSxUlnBnwhI+xMZuRI00NYah6bYgNjSVD80J2/Zjtm96sP07hKZzUUvzFQaO2GAGZHAYulGsakbNd27HYRmzrD2JWXYp7b+nV3uWZt6ABnOcb51leLEH2kAo6LA0Xw7IzcibI6ubN3Qi+7hnZDshBM+GPzhJmWitSxeazhocwaOWlr2E/zexKarv59bZucgrHOOO1XMY4WixOfIGfokzusAIanRDoHA+9Cdqvzp2DeZvaR4Njpt0gZbh+C10F6CjEJoVkrY7Ht59IhqNnCLOC5hQiD8RakCe2qRSvpNDkfnOQtYQhazX7erKgzL4EDgOkCr8KJS5+TBTTsvDFyPJ+AR9tQQ4uEKIzoXeIoT6qQUcNQIFiIZzgK9tmTFufgOgbQ9yM8Zyc5tlSC8TnYXpjKkMWnw7H1xvxfEArKroRSzYMrqZdA0hlGclzR487gieCg+mDYRKdhQ0hi33VJA2/sqR9T12SYw7+eCXSOkHU1CoZtgJ7PFt0DVD6xmZGbsgfk2kqOcQ2TVwg0xua+ODzdZSzNi6MuwoOB5YjBWuZY4BH4QPT8bmf5RSQd8YR9xABnMDmMeLZtv/O9r7S9l6BZp8Setqg6XFAoYd+SMJwNt7YuPdJZvR4Lst7Qbg4Bnw4iGadPULGVpLo8EhLW2Wn3mxTwAjm+BBuBNqiCxBTFNbz3O0nD3SJc+xcsygbFLOerkcc+tN0WBayx7LzxYry1mD5QiAKQl+tu0U9O/w2W8Bs/4cNsLOyEPpxGAlXXebO4xa/sWQq6TlU+lKIeqwAqUQSrKqKacOw2b8PHzsG5UJLYWMxNH8oA3ByOQIrrIu5EE5pFFC6Xyo0Ew8B1+ww9JsAWqID7AB+KmkIwihm83CtTenSZdhbAKRy9V803azELzZHNkGJdD4oQS8TnAf+goIbkDo54jrsMz4SDDstDzYxhOdwmc0H9zrKPjM8mC7ud1hsX8G4ha9SNbFxvGbZRqhYOeKxhtbrztC3Hn7d8R9QQ3IiSPrayH4ltAeBUb28U2HexyGMDKViT1voAPN/wTRx+xWz1kzRgAw+p8Mb/k6GnWEQPCS4EQh6DXPbp1xBJQxK41v2mHmC2CAtbSYoe6uoY7g6XAqNihGTJEDwzGMiEqZpHqvWWhak84FhsfKrcRyoU/f+jW2/tmuVD70kyvNpIeesNuOlQTPyOYfvoSYPXp3MmShzY+LG/qah9Khb9DXaPwzrI2kEbeeoZqZJhR86Qg5rKWW5gXo+lvtPUTlYSil1MAHX+fHfCUNFVrzOoSCr1ZcJLQmtYO/WjHAtscR7I6gpwDUXj54kG/6DBhbeoZv7zLaoc9Gd0j9oVq+6XODlF5kSUuBf3PSiixDDPBPSCvanER622mjb/rs1lXtObNbb+3IcWR1VMn+x5JWvM+SNvuwZcisfZYhcw8D3G1JGwhgt2WIhW/qLARFw7+OnsAbfMFLEJMQh3aUz9oO1tQDgbCJj26nnJnQzpJ5UPEUvumcQRoLf40SaDZHCObt4aPt0F3NfUJNp5J8+UKrY0+6zB8fSuODN4X5UCnY+k3dkCLcA2k6HxwCfiQDMmbwBeHAmyXB17ATZmAnTA9c4gh+IsSGlkA3HVJru1Ve84NuOp7uiQ319TjU97Ch/mdfJYrr3uGDDmsOCV0crcsMW80c7du2r0lhimBnTbc8QlzKB9M7Cs2ke7NunR4bGhzWNEfIhqHdMnQ3ddDWMKgPOtaDvqo9Agpux1Z+iW/6GFpZCF2M6m4/N80x5jPecFCIJp0QmjpBed8bfZOEkAUp20/B0495w0vw9KAQmmuORzZ1pgkFnYG9Cn5fO64Mfa6CwOwY6ckrjusGZhD5lIQm2lHKY+AKLeueIdpYZS2FmRiavt12qKqqKltuz7mhYXtLWvZbHlhN4vxDjuAHq6sVz/ng12BFxKcLljm7+da8ATwEJ+1np/GtMwZEUV/tEfguAY+vn4MZXJT6f4vjNd7wlRC69VWOH3OWN7zpKDhw13AheOsxnOYZsNo1vy0Jzue6kkuC5cc4IbpDiLaXFHxkaalB92EmPAOzJcEPSYvy4E7EbjIaKzT05y9jLeoI5ui0qCNYaeWxWcFFG9BDL4TWVxRS/SWZVUH3hdYGq7vufaLlIQRt5zrsWKqdlWpnpYaxoEzsymiBoXLwJeudOBCDHWY6QhnIfyFYDvTZnnNCZwfqHjTY4Sj43hE8x1vmfAXukLfwEGxK1vyibTg443gBgVIhv1leTeQLOrDAfN4yox17cxIfnZ4G4jIl8+1C8BuQH2Sr7uqP81cHDkB22365/UowYFxuwIGlBAGWcc5u6NUDIQxYHBVCjlchJjhtIMPHNpRytauqt/1PoZ3yY7bzhlN86wrQ3zd8+2lA7HC0zhhtgBZ+k5sdKt8FbvfA6iF8wcurx5FW7hpKxjPwUauh2aGF+eBJPngWJgvTDI6CD1c9KQQdx7i5wUFvCNHtJQWnLOtvAg3Nblp1pgemhCCEpXkrGl20DYy51x5nhwa9gj3Lsn4o9sboHmKzH65exub3YCbQV55n9noQGvMinKsQe5UuiqI541pB66prwF4hXjkXfZ7Z6z4QUAiVvwn2uos3vA+M3zWUMg6+c83vhWAJ15WygXAtG+v3lvWeKI5bwG7kPohSqjbM7pwBApBpLUYCaBfQbtiGC+cEZ/T0wCQ5emNa4Co+dA16wiFr7zRzgYF88EB43hdobu/ywbcQKu8ikBDtdFy7CqwXBqtllpYPSHx+K9hdyyH0T2lY3GwoTggeFIKv4dwWR++1P4VCk8PcF9TJmruQRzA77MoxBoIvq3mAIsJ7CeXXwEP4wFHM/A6SQa8YCyFXWmCkPDcYuPYuUsNjXXSG8ORRVRh1cRf6mWPnFUbt4ts/MdEmMvVGLnzBLst9Y4eg2QYgJi+BQWY3C4pgbPGXloTcZuIWj0kDUcQjX5DFgpKsb6VUCCMgdnEEPw5PPAbY9jOm3nHnbATDi7u42a1JnwtBu1loHXQcWjaN6PNW68I1F3eVVCn9I4Y1pP7oq0LIDhHObmkkypXChwZiSA+jJJaD1r6WTqyO88EPwlfmkFB1TZtCK4ajFzI/cVjrHdTJlDpCmbHYUgDFND+EkxAImtfiisWW5VX001V24eH3VQY6nyDhNwcMRoYDRiG/EJoPMnUr/MHrPMyHgruFk19g4Ngengb+wcgbtvO3bz9x/6OG/ThWt840rBsFE5f+fFN06AqwoD2NKbY9XalVGzq4CfDUSMLaDijOsFcoOMG3NlvvBln8F2+4P/X+0ui6Eet46Nt7+YJuvrXQ4DuqCBFeCMtLYJtZuEtCVYwV1qEQt0fIKhiLEdhqGCqy2dpIZlOrrPUoMQLhxzKxo24hAEanE8mMMytuxvnbczQ63fo5nUo1xqZSu8yOaz0Y9B5AEnDeOSWhG4qa1vTgDLVxLIa2/wlqlZGNgxFzH2CE0A1dJqBBs6sHY3KEFsOY9wGftRdCCZMjVGktle7iTWvCQvBMSdYZ0IZg+eu3joJ3LM1PE5FutS4TWhf38FkvQ/AJMckOfrMc3YIdGG37+TFvW5rJJB+GomoHxLBs7HsXApdzfOv0c/zrYehD0TZpJWq06YghUA9DB/hbEuIqlD7zczpCHgK1Y/SfbmmenoTKfMj6FCh96/fL6BLkl58nUn5XZHgS4yJSamDfbNHIGhJPFvChGrMDwiTspCGQ13RHuOg5I3EOX8PgafSDztrRky50BA92ldyI4agj6yU6X+JDRRCM1kAgCl9rOd5UH+ZNdwGqCGLSLC2WhKfbzwT2yCXywe94w1kYugKDYR6PbbEs8mfSjd/ls15SRdRvQVBvwoXO/dIgcCaBfoS6yw4mbpCBqwAgEbYBazZVY41m8kiLUkFQM0baUwkL8OQmM3kKTIeMNClKi2GK0uWvIA3YQ+AVnBk9MgCbY711A6S2/eHvjqA1jsflH3zSdBeY3nCZLtwvTFeGSKbQbLNQ8KqlOcVIlmUFnFWDj4JIoxCnA2yxcWkYQ1ALLuUE3w3P/AwNeI4Zxkmh1W52FECDSgPAOQbEyHps4YLdluYm+FK0FftQBH+1cKHOaY0/5piWgzRdlXR+HPwSxwwYT3MIc8fRz//zCLKz1IwsJuHKGB/KdYRWh7FLD76xddWVHK7Q/PxI34uwi9ky3zufQH81fO4wnBWaOtKwqnrHtfXQObsDd0f+wv0Lktwak+TXn4IkJUr/GuwUQks0nFeFceI0kEn3zqeU71GE7/TY8s5JS4uPsTwOWHYYjoA7kvmtBn7DMJEOPEbND6IkdE66wt+RTOfL732smpCVfEJmIFh9Ni51EIsJmtAH4le6kqWekG0mK1kDZGrbIeIwlLUR52ZpaUGjABuFMfxSsn8BdW3Dc0DYDYLbw68D3JXBh5LXXZcBhIVhvnUzPg5t4vzLuKa9hrCImgklV8vPQ0/tgydkTfMUzBnW3pXPScn324u7SPljPkZqO5LmbKWbE8ej+yxbu0ml4Y+xsGBn+P5PiLoxvMrQVVeZkarrzx/h8hUMKeEmKw4hn0qX0+nuCCF0nZXGHMGPcPD4PHz3R7gqFZXGwiADsZQQmobPBxWtXUNiqXkf0zFmESE7gaufc8jqZ4q6auynOIhMwqr1QzPTxzQ0G/gR3VIgi/OpEF/wd+/EfanFRbcWLSlaWiQu2XHhYYP9HF2124g2vQdqiOSeU6/+WZrfhObVKSvSpvEHlubdfVD/PY76hT6on4yj/ksf1P8ZR/2bPqjXx1E/1Af1mjjq+/qg9sVR39kHtTuOurYP6oVx1Mv6oJ6NjrtzJunNJcHs+5M78zO44nUzstMjc2HkUNjBf3yuWL1t/xDsoOlzFcFVRxQEG5Fg+BEVwRIlwRokmK0muCisIFiKBAY1DwOPKgiuR4LvIyqCYUqCkUhgPKoieKNLQXD6AyDY3qUiGHpGQfAuEuBWroLAoyR4DgkWqQlOfqIgeAQJjnzyryyX33JKUU4pljPrFHVbv70CG+szXCf3GOSvit0BS/N8NAJwZ5aW2cTzql1a89g4G8F5rJ6NfEKCpNNYB4wNl0G56YHhbP6ZHH74PTouPfAedT5k3dY5GvL9zoBjHmGsUWasJ0lm7MukBIz1M2oZe78P491NKyDDF/q///M+KOnhJOS2i3JraW6jFaZbWp4lFTKuDx8iXEceBWTv4D04pu/DTKrNh9QbKjEJ14yiGxQi2aC4RbtBIU274Miht3LXe9SfX3uIDg9LyfCwUDM8/KgquPdwBDoZfvtdusrQSJQ1LdY6k+Nb50fVt4HqO1z9rmKNPvKaKbH2Kxj1Ne+q52ARnCtsQ2cVPn6I7tbB07c5Fp0AvyGMlTuGYTMhOmx+l1olAlv/y1nIPY/HpcI/f6cXTfYrw9H3VMFQ4bt0kaElamk5bUIiWo8d5jIXJxGzi0wzxeyb7c5bmsebZA2OMSWw76wkrX1HTfr2fdTENoOxtt+i6I/jRtm3b4OZv/Yl/Bl2NhoNf4fgmRPYnhBr4VpkOp7dyJF7QEvMF/w0kS9YGucL8vrocqPlPk3VoS4KD7uri5pi1C9qjFHZez8MH3uHxk5XHsKU7CH3du1976Af7a/O8QIgCYCx1F+Qwp/cq7EY2UP45OKzZKsx7uEKfPjLM9Sx3jhKXcEifHg1mcZ2hifQh135CGSMosh0lqaNSmzJj7xNLbn+LTl4nInnRJpWWUs56SoM4Ev5KJ+OMR1+DeVT91SE5BBLl4an4jcgT+ekSUiTDuRkTRG/UnIyD0hf20hiwZMsZ3r47EGaM4eTbqOTqChvDohsPvXv81b/YDXmhENYIxSfgZNKKzIK84nAZZqlyvlvUZUsOaiIVpcNpxs5majxzFOqAfUBk2LhahbkjqwyyaNerKn++haJuC3NL+Nhn+hcMPd2/KZZ3mlOM2lt9LM+bPR1Y2/XxxNECm+jPWZB5kIqpdarlHqjnlLzEyl12UGqpPw31cd5Ii+dU+hGkWEiZBA6Uza5CskYFUZPRhzlk2+hFkaDKwhMQFHCxOXhDGtLEn4PPZOEcuAc6zSU0XUFOpsUA53z7HmTthHJFPwAp2rjDtKwpJuNhnhCJfzVQZX3NL4pTyUtLZcZqAqRznYoki87kOTrs2EqF5QZGjwzm83sgusJXyg11pGGs0TIn2/g/n02a2BqxQrqSbttsWZCBeHNzCgLEfjpm3SQ/AWkfzcQ6zpH9inQur4lK6Ya63qL01rXn/sIrB7helXDZtqHuT5m2uq6Lotz3F/1Udd7XGIHdfIAnYq+th/61c9OJjau/Yzoj0DUfIju4j/wBi470XN9EKRYmv+O/hwCFUvLH/DbvzFYKTtA22H8ftpqm+TOUGhMLNTYA2Sx4NB4lYV9Ov5/0MIe369jYQveUFjYJQdUmykvva7YnSwhOwf22OLqNtwaDX9+gO5U8q28mSe7GW3SID6Y3ruqFCwx49YlW5dluwxhITjTTMKBDzg5HKBHyjThwD/jLLhV36q6fkq6srzjEtrHxmMcsUftJ2srlubncXAlFZJDr9oKn4kL+e/vwyEHdFo853W2/7WPuMHD4Aa3roU/z9cvLSRLKNP20zNtC5WDxp2YC8K3p9jhytvIElDlvzPw/eU+ypj3NWoPT8lncKHajf/vqs1g1fbspdVuVFS7gVV7Fal2TGxOdB3T4U6WRz4uTI+/BkgQsbA3iFj47wwi6l+jQcTC8My9NGyp5izNR0/SgKIaa7W0HIqB/8aaT+ylNVeHX3mVBqC/20fOoMFg1f9UYn+4fS/V1K8gR+Td7/F0uPY8uLkfjnPf8cHrrEW4TGdpfgenDaG70rauhWmIbT/Z9gg/QqTtgZEFb3tQDKHbXu09v6J33rKdx8NuQdwd7epftUG4u5McO5d3VtcIrUn9+OtxhrEVf5BYZHGcJEv+oTQMRdPC//UqObhoab5HvQVU/Ko8fNNjZpl4zKlVsqbhJlA4Bcf7V3VOXQM/EJQGvwz/9TW6ZHk1mR9b4w/wvWKgB/gWvBKN0v0dylt+uBl0Aly1FJDgK8nqCOXgaBKqDkOBL7BDDe83NfZwjQOxa1tfwwgnBWc+Zr7VcXn0/pFmhTSBV+RdxKItRJzxlq0HyLF13OFoXW/tRon++kr8dpYQ/KIkeFxR1NWvaBQjH1dCxfRgMW+/klAxZIU4dHPYEQpwJa11YeHaBeGABY/dLX+VCPvQji4j2XKT0onChrKDs7sCC1FJtpfpKcd+5JSjNLz5EB6cm1Cl2r/WHn3ELYHpaNDfvITDNq7Nmy3NB2EiFPmAbGh29B4EraYHQYss7SkwYCb1IydBMem6WdW3qpR9i5DRpKtcRbZMj2xOUSillY8WBVPxZOkYcqLiOPYr/PVY+DYQMzIoqor+r2WnRgmBgARZaoJ/nlUQZCLBf5OjE6CMu3diN1Qsf+OKAW4ZkB8QkGPQHYnOVTdPixuUhmsGJYVQEY7MZDu67oI/8vjXdXsv8GF4CGu/xfSUanncKdXmr39wmVxZ499JFN1b/t9eYhKHSCBQQzy76wIGFGUbad0kUexre6jL+/1uVlMnR89AnAxLIBxdlFn0Eu0fnSZ5HpKRJM9DRr1M4x6CceFKDP5QLPzWHtp6mUl0OoGX6YWfeEk1nfj77t7FmMVsRoZ0uBizIrYi9P4ebeXrkuXKf/MS+7EFYpqw8osJv6zyDclsZQ/S8JXqyqcoKp/FKkc6rNwVH40QZT2xmy7g3dkJ1lgZP2MjRHftpsPNfCSaBkRd2KSRCtq0EL6OHEPD1wyyFjf4yjG94StBwRCNWpPD1/ok7XrM3+Jiufs4XZvqCtBan8ygtaKqoNa/ZvTWSlAYGCT31vp2siZoXqMyslv0apuVSCW3ddLIA8WSg+ZlaBBj9tD2a0TgU6DquiFR/qtZfmRQzr8b2/Sj3TT/YQR+10lNeQtLd3bS6cWfiGlT02KTffx6XpN9S/Nf45Td0oey/bIZsYrw63lW9Eqcp3iiD0/RakhsotFdZIq0eZTKxtpHXZiN/SiXsmqXTmvndipa+8Qu1RTp9zt/cIq0syPBFMkRzMcN2SQhOktvisQHi81kkl9plCf5i4wJJvnXxw0OF/UxOJyDWiJ367TCyp2kFSZdrupz115+gX3ux7TCiR06febPuxR9pn6nqhXG7PjBVrhh149shUEGuRWMhgStcCSuv72g398iT3LMq8pz1Q/bFXNV3w62eHjktLx4eOh0gsXDP8bVubaPPl6XSN33badLKWI7qt2UVgkT1X0VhVzXTxJR38KobZRaPa0l+yk7Eg8uGSxjTxsMLpbT5PerRQvK+KYv0oXgOSG0NAPjhPEkTrgy7sjDH9nPOZ9vw9n0THp8M7Q0va88v2R57qV50lmetL7yNLM882geGnSHRmGWsSTLyNjk9PHt1FlfRUhT6HnNnemLi5aqzzTM720NhzUpBP+6BBXBTUqCQUAwCM91KQjmKAmGAcGwrumKcPNTch4izxp+EVV78JwqFj1NHkpWc/hxfPqF+umQKH2aFr4bnxoBVMbvivkjaaaTjtBEPPxacq07TcrA8DEVLFIIJlmFzn70SOJOc0nQbY68g0PCVvlALZ6jdQQ/cmR9xbd/b3qR9C+LPcIbXrU82I6/H2k/er3lP7abXwLsl7QLj+ILvrPc9xuyAMZ+eLC6HY8ywnQFOHAEP3NkneCDX/FNH/XwhnZpMPklxBDGR0nBZ5bmx0iLdPTw7V+a+GgHnh9DcgM5lP81zGKh/0O2VJivsvYTWheYqXeYARO3pnNG31z1eVxojMF4LC5o4DuNdPd1OlDvhWrMuOtxJwArwYdMN1NzwF+xdJiFgp1YdXB7YGsJTHN7SrJOCu3HTV2ltJ7WhebIfdqTXRfFt7nCWU6mjfYKaLgrSznfGhX/UzzZuAOPo7WufDFmrTDdMpcUfBvYgysY5htbb+1JA9WSc0RmDAPnvEgXN/CMMbiqJcBpUhi+p1Ezj01hwv+9LW69oRT6dEnoBuLCnqIr1OmWlscIj6PxJ1h8QZfUULQFeevK15ec9heF5FcRSz8ArHWN3OAIjS/BQ0gCTlBHCmzS5Cj4PPBnmMSFW7cQHyWfpOYL3g+8SjceJDP5/c8W6pLcW5Q92KwQrUo9n52PDuvuL9aSgPgcWQJIRweHN4LEfnF+H6qt4FGClAbBjA/JwSss2cG33mo1k/Af6R6HxttagJF/FsMseZEsG9ApE92AM9ONkVVJ5pCUlIlbImEUPR3Jt26hO3hmtg8yCp50NFtXQHVXUTywhtDz2OHC0S3ypMj+It2ppgso11nDOwFR+A8DqhbDzu9ewF/WbsXbsp7HK0YR9/MX6VwmlHzx8AyOGm5o8BXD5bjAkWTGXfQ0GhHgWtx5hgOrDGR8wiQuHGjEFenPX6Ab9Gk0Flhl5cO/e5FKvix82xbqhO+h7HUtITyqp7I/qvYaqL2wGSboxiiNyTOhxsh358j4VYY/+JBndz81h8+QXdsPF0e+eSHh8/fo8/AbLzC6rufQ4cbsS0v/J0b/O5n+hb7pVzF6SaYPIX2MfENpeABwH37z+UT99aQQPMNv63XZeVYhVI7G9Trz2y8wv/0Ob3iZ+O0PwLOC324z7wbsh3b6M35w3KdXrIz9jmnPC+x3n6w4R9bX9Cdcyl9+ppAfqpnJDyrYjz+dwKPQ6jnW++PPbZtxv/wnViHoAZfUOuN96INgFZoeG04nqqcCg3jBaNECIXiiaL4QfLOo3NF65abBGdx8vnXCZkjLHFlHbIcIM01fmMPv/5OuEI6S8zuCR4GXGVBGdNh74EIM4LUCR0mNS+Qqdyja45sd7I4hdqUQ3qc3sdLdMNEvVdbUcQ1ul+T1XXMNu3yRu3Nl44qGgOT33VHvrav13H5bTfXyKnelq8JZkD91yuS83Em2HNuk3LzJU6bmFzgrXJXuquXVNbfd7qmt89bf4fNLgYYVjSvv5DIGcMr7M6+5xh+ogK8aJN5x6a0DKOCSMuoCHk9GnVfKaHB6aiq5mjqSZnhqJLfP6cmo8voyPN665ZlZGStqpOoMvPwxw5ZzzVWcMHFuhrceiPDWxwz4n9yyWJlRVeNxc77x3ExIM8YgSR0pBS/Zheq5Ym/AU1l3lcSeIBXHzbFNEmc55k4vcojiHNGWX79SqvbW1bgm4+WWflvOAqcn4LbjXZT0Vr4foM8tk5x1lXj/KMvSN32BXb69Ur7z74fKnw5qUGZKY/f6FVYUqu4LjN1vxp6nsef1FYUJnx92UvwGneeb2PNNmud98ztVmKvQ3XnIN8Ve11DjA1N010manGp+MlyJ+ZGfdzP8MldhwvcRyHrAOQORm6Xae65j95q51PRtP0C/T1N+t4becJnp2ofYnX/pz0SjuMe9GTp/OsQK70CK27m7wd1kgMd7G1I8wRr+LBrdAOm6b6JRXAjN/A6eQwy48CQ8hzS/B57jPPxUNLoZ0mpI90H6CKRhSHdDipczmmHqE8byIM0BeCH47EZ2aeMw+b0gd87jDI1phssG9TNvMPRLG8bu5RsDvCnvk0tMT+/AQ/qcv0ejG7Hs1LSZqek3WgauMK/lpl167dW51rHK/CZNfrm+jVAfub+xKDVN+f4S052lDpKjnwmv8DbJ+fLY/XuNkG9gNsclbVleiHmnp6ZPT82Ynpo5PTWnKDV/Vmr38KZ+61Nakx9I+pnpXiPJdyt5X0g0+utBkM98W+J8bamqfMjPTmy7r6JRPAvNTU9NK0pNn5Ga02R6wEj5+RTb+Pto9G0mh6bMotRCVZH0fSsoK5YHbT3emDDfjNTSxPnKIV/Pt9Ho6xdQH+rsVsi3EWxqMOCSDsfkL0rNmJW60dSU9ABQY7s8gzYINnc5K7/JSNsLF+E2AP5KDf5TwD+VAH8G8G0J8MPQZqFPjFG0O96h6gH8JrBxN0f1/DOjPTX9AZM9NaM1yZ6auT6ZT825N4VPzW/qV5Ja6EFJQd5MIjtoAGQxk/Jxd/1tKMeo6bNR067mtWs505ak8ey2zGK8R+02BixG4Cy75/JvSNJgoJdwBvDJdCMlO4Ns38xeB5CERv4NA9wIjDZRsl9iHicD/obAb030itG9ABheZ/fT9yCAq45Itho1hadQfyFfyYqLUnh3XmAUkB1NpuzcNYq9iALzrENgZj9a9EJy/SjMDB/EV2TgkycAqI69TKA/vVz1YrzezzGQFnAQefMPodel3o0irAbgnt43ZNAnv8Ir63wXUQ5aENh4ERXBioBlGC26C+UZwwC0OsOxYbSehSicNIJeO/oNVvroCMq1Gcn+AMDDcotNu4TjcL66AdnpAOBN+a7Y/xpD723swSe+sfTyV8L1vWPpTbMkTwj+DJbvo31kHGX0LbwFb984evFmAV6BZ4E/y+TrbL1X09KIdTw+nuZ5bwIzhkVG1ZuVoqYDd3OmfQR4V1bVu8ySvFhzfwNVAjY7JzHgLAJ/MNA7Vo1I9o2B5rEggPeXmWV+0tirGQpx2jg2md7beSMCc5IVl4e2MrLp+ORxRtaGwMsA/FMu7Z7+VLpL8Y95IAU2YssOhT8hQ6yP7ONMc8gbkuQK8Es9PkKgXXlf7QF2Ke9jmPtDdvPqbw2MNtXA/e/nfz//f3za2PvbDrP3hWwcqY77DDrpoWQ1fEQDG9m94/Kd0xnptFz5runmZRS+RL5Xlr1HTL47Wb5LWr57Ocyey3GSfFf2d+eiXuLrjIWx+76JXP0LY/ed08CKwvKd2a+yB/Jd2fLdz8M1+ond+c3uZZa94cJkdZwo+2n5bundQwtV+LYhhSq+zUxR/TX1n4tSeTIYfZTBMh/dDH4grfB/1E5i77HTfBawdq1iaQNL72Xpwyx9kqXPsrSDpQdZ+hlLT7A0hc0nRrB0HEunsHQmSxewtIqlDSy9l6UPs/RJlj7L0g6WHmTpZyw9wdIU9v6fESwdx9IpLJ3J0gUsrWJpA0vvZenDLH2Spc+ytIOlB1n6GUtPsDSF9ccRLB3H0iksncnSBSytYmkDS+9l6cMsfZKlz7K0g6UHL0tsR7OKi6/JyJxfEaiTAhl52fnZeRMmBQhkW23Ly87Jy87LoniOEbk8zrrlGQ1unx+XL3KzJ2fnTMijWSatlnwBv7RyUkam5FzunzjP7rAXldnF3Mk5E6vwfRpZGZm4DlKJqx4Ox4ISmj2L47L9K2slZwWkko+m1fK3mjrJ7avnsuu8kju7aLowAYpm0PK6QHZFoMZTOaGmkiNQtdNfzWVXrqyD8mgq+egTxrAKEOGZz+1xIiH7Vu+RsMoa+Cu5G+Ev8F0Dz7yVTsnJZburxSqfs9YtVlf6eiEo1OVi7zIRJfJ6JFKG6PT5nCtpGfL321w+wpiztsYF+bwS+UPrpXVU+P1ctstbi2sIP7o/X8Z8tezPet+ryan8rHYckD9XaN6V0PveSk71viv5k6SBbZr8EssvKeZtfeXHedMJ8IVyftn/P8IQ7LWYsfHArMk/h/l+o2Z8kB1tGxsfUpjsZo2fXsBIjZrxpq2/enzR099S5tvl/LI/f4ANfBs0/GteH8rdzsYKGZbHiwz2sgX5DHAK41Mr/51Mp0bN+NQ2RD0+afUny9+syS+Pd7uHqsfHZBYDaPM/wPW+a1UZH2Skq8d9vfYPavIXsvyFLP9Gk2Z9TZM+pMkvxz+HWQDyxIzE+eXPrzT55XimeZl6XNfjf6Om/21g+Tew/I+Y+q7/KU3+3ve/9srXV/3PavK3sfxtLP8ZzSKC1n7aNPlxOYqm7D0Kpr7r38/eL2LSxH/y+2W18mrr/4C9h8SkiQ/DtYnptfBRxn8srmL5u88z/3FF31LGR/L7f2XFpGjyy3L1aOqX38/T4+27fjk9q8kvx6dkxop2bOg7P/7oS5n/MHuvw+E7zk//g9jEPlY/e89PN8tv1rS/djwYwurP0eDl/PfqjD9yOoRTv49H/jT4mP8w9O1/lbar/JT+lL1PhL3kBteSShL4r/469W+6n/mHIX3X39fHBNTyeKzGG2PjrBpvio2fanxSbFxU45N7xzsVPiU2jqnx/RLON0ygFXncUeP7x8YTNX5AbJxQ4wfG/L8aPyjm19X4wTF/rcanxvywGm+J+Vc1Pi3mN9X4ITF/qMYPjfk5Nf6imP9S44fF/JIaPzzmb9T4EQnnWSaYVcr+QY1P7+33Kvwlsf6sxve+B1WNvywOZyA++6uoFv8Ttjaq1cMNDI/bC6r+xPCHNfgK0v9623GMIi4xAJ/Jmvep/oHRy/tNVyqWHhG/QYPHRTjEy/tU8juWpjP8ppsp/iFWgYfhS2+h+PHMOfyN4ds05X/A8GsXU/zrDD/JSPFpsyn+12wB5C2GX3YrWwdh5RtNFM9dTvED2UuH8EYB1EOSRg85BG+J7cPJ/mgZw9dr8L9g+E0afAfDy/uIMv4Mw6/V4PHcLuI3aMpZwPDyPqr8jqV7GV7ev5XfmfQcw8v7sjL+C4aX9z/ldyDh+i/i5X1P+R1Rcxhe3v+V9+5WMTxXqab/E8NvdKnxHzL8Pg1+YEpi+x+RgvTx/feKFNqOOZr1s3yGX6bBz2Z47XqbM4W2u0HT7vUEH+9PfsnKadOU81tCH++X9OTaTuiHcJs1/Xqfjrycjn94j9DH+6WvSSB0URz/pn4Ur+VzRD8sJ94fju6HsUS8f7u6X+L3SAs6+IAOfiPBQ79m44UcI2xieINGz//sl/j90id0yr/MnPj95Ffr4G8wJy5nnhnf3wb2JlJ+3mb4+3Xof6+Df5vg48fND3ToTf0T4y/WwV+tgxd08AEd/MM6+E06+Hd08EkDQG/GwVwG05u8/nvZgMTv6146IHE5dwxI/B7vhwckbsenB2DM2huHyPOhdp3yD+vgv9bBjx6YGJ87MDE/JQMxxo/vR4t0yrl3YOL3pf8fHfo3BiZ+n/mpgYnf6345jJNDjJdw3Rp+sgbp2M+gxO9FX6ZDfxcrP6wp/34d+scG0f6extrLzfB/0aEfODgxPmNw4vfV36BDv2ww0lwapwePDv19gxO/936LDv17OnhDamL8WB18cWpiu1rI6DdeqraT1TrlPKiDf1IHf1wHb7Akxl9iofo0B9T6HKVD79LBr7BQPcvvoZX9/N906N+yMPuU1P4kJS0xvTWN9kdtu49n9IWa+Y5Dp5wndPD/0MG/roOP6OD7DaFycZr4ZMyQxPTX6OCX6ODrdfA/G0L7Y/dI9T7eQwSfYP440ef1ShPrVzoll7fS7ZtY7/NWeNy1/onOCpctL3fizIn4iupsV309eUO1cpHeFoeZFIfJ52LH/fyBClEQY6WJi/TOAtpsoojbElJNnSg68uZ46+hL5M/7qOaMHPoe8As5S/kv5Zl0Hnny8KTp+VF6avySMKfMJub6JZ/dXlAf8FeLFU7X7UJZrmi3N8wtF3+wEPnI5Q/JE5BqPKA0f7XT564Ufe4qoUyaQo8HAws5Ii2NMFLmFMomQ/12WYrZ59NwRO6pVYE6LDIfD+F6aurcLo9w47ze8gmRHYsud3n8vj5KsseK8NcjKXBWaZ9a5fWtcPoqhXLRXlVPWKyfW1Yg9sVkr2CuBo8sT54o4nOfs44Y6GT8M8lFH5dJjnxRrPGSXS1xUblwIWeGz4Nee6b3fLJojhmfR5YEJ2t/OFfv+d0fpi1Qi1B2gVoqu3AtlV24lsr+JS2VXYCWyi5ISwsuUEsLLlxLC86XeZdP8kuBqqpsFyeKNxbPEx1CWbkocjAquJeDZ3L7RKlWdHnAHfu5BChRrPSKyz3eCqdHrIQ+7xedgUbO5a2t97gld2X2lIL8SYmJxN4NXhEU71vJ0U3iykBt7UrIooDE3n1hRiqKM+cVldhF+5wZwCzlnH1nUs+dObPMXi6WF0132JFCVUSlGuGXnD7o5TNumVNUIhRzuKMs4xbNKfNPcdbXQx576WxXbWHhLIcwvXjhQjE3O4+4kTIwIBClUvQ4/ZJY55VEbxUhjaMtkybliCI4HO8K0eOuWy5Vi25sBSDWkIqemgqX6PIHiJK4GDPlC8ok22Tl7ysqAlWCC5A2F/h0UfI5ayS/4ELv7bLb4xmwTZEZqHBWii7guEFb9fJabx2tELV5Y4M4j7V6MQjoxyZfVOkpbYhTRO9I4oHaPXa7rUAsEd1gCE6Xmwxo2OowEMyGZ/YG8Nl0YCvzT2U/TLEn0q402YUmC+LYcqG8FTWV7jrSdnY1C9k2G8e0hbzk13j9Ih6byBOAttimoeZqnR6PV1a7OCl7UvZkrgp/I6JGsZag6sDxQfMY2c8DDdUX4M9cYLCSQIraebOJ/rXS1K3AJ1IB2AhpAkmrelejU4QSGmuk+GokW64vUCfVQJ8gRgMiQWH+vmzMG0BbFGF8W+5OYGPkTArYgMcjQuvW1tRB1Whj5VBXAbUxLzUy+Ot21p6vnVUtd0v+BAKom2RGXJOIQnmJ2Ot3ykuK0cWUk5MhojBXJD9mEgN+dyXVO2ig1pVQ1VU+tzuOAeyoU0lHrarx9dlTQVxPnCEgc4lZE7X+ghiELUdEaaAs70q7jkGgeRe4Zcedt6LaKdkbEnqYXAXjeu4lVrMNbJG1qCeuznIhzpS0hgHiyc6U6Rnq0xGhTMpzgZ3FowtiNhXnYSr9XrEaBmlQHp5X8noS9jn0fiz6on7LS80QkOAtpETWaJ+HsvWaLhotDAE5or1silg6G+Jpj9pnFHC17tpab0OctaCWeltGKx36v757coXfr7AI7+QqD0T18W2L43QO9vtGZ0VNgw27rr8GOyZkR68HslZ5QeeQo2i6INqyczVdCYPzhF4EvRvoXlTIoC2kVz69UrAf6ZUg1oPoEJyLt7tXMs+X0E/F93NQuau2Xq1xVwJ3TJmkrQnyJmzwyS6P2wmTFQnCHQF0Av8k4ETjDtzeKq2JoXik7dRSkdCA9MsLGGbJfEkjZBX5fWKcWanHb7BPnYITDd1TlUM30VeDngsAQyrDoVdaCT6rHqry+pzL3fZEbVwBPq0ORgHJVa1RBTlYB/FAY6NY7/b5veBNaqDAhpx4U7rA8QI8CtoJabG5MObWeivdCQbLBNKxUS/O+c2vW4EOcp7bH6jFooqLAZ/DwhLsCjAbjx9wQKtTWReOr8ubWx+Q7K4ETICtlUAA57wdvBjMMxKYd/3K3pa35amjyPhRG+MKjvq6/wvi6zmPSpwAAA=='
bin = gzip.decompress(base64.b64decode(gz))
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
with open(pymain, "wb") as f:
    f.write(bin)
os.chmod(pymain, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
if p == "":
    pymain = "./" + pymain
subprocess.call(pymain)


# compiled by pythran
'''
#pythran export main2()
import numpy as np
i8 = np.int64
i4 = np.int32

def push(val, que, sz):
    i = sz
    while i > 0:
        parent = (i - 1) // 2
        if que[parent] < val:
            que[i] = que[parent]
            i = parent
        else:
            que[i] = val
            break
    else:
        que[0] = val

def pop(que, sz):
    if sz == 0:
        return 0
    ret = que[0]
    sz -= 1
    val = que[sz]
    i = 0
    while True:
        child = 2 * i + 1
        if child >= sz:
            que[i] = val
            break
        if que[child] > que[child + 1]:
            if que[child] > val:
                que[i] = que[child]
                i = child
            else:
                que[i] = val
                break
        else:
            if que[child + 1] > val:
                que[i] = que[child + 1]
                i = child + 1
            else:
                que[i] = val
                break
    return ret


def solve(A, N):
    count = np.zeros(N + 1, i8)
    for c in A:
        count[c] += 1
    que0 = np.empty(N, i8)
    sz = 0
    for i in range(N + 1):
        if count[i] > 0:
            push(count[i], que0, sz)
            sz += 1
    num = sz
    ans = np.zeros(N, i8)
    ans[0] = A.shape[0]
    work = np.empty(N, i8)
    for m in range(2, N + 1):
        que = que0[:num]
        sz = num
        x = 0
        while True:
            for i in range(m):
                if sz == 0:
                    work[m - 1] = 0
                    break
                work[i] = pop(que, sz)
                sz -= 1
            if work[m - 1] == 0:
                break
            x += 1
            for i in range(m):
                if work[i] > 1:
                    push(work[i] - 1, que, sz)
                    sz += 1
                else:
                    break
        ans[m - 1] = x
    return ans


def main2():
    stdin = open('/dev/stdin')
    N = int(stdin.readline())
    A = np.empty(N, i8)
    for i, c in enumerate(map(int, stdin.readline().split())):
        A[i] = c
    ans = solve(A, N)
    s = '\n'.join(map(str, ans.tolist()))
    print(s)
'''

Submission status: Wrong Answer

Solution code:
import collections
from heapq import *
from bisect import *

N=int(input())
A=list(map(int,input().split()))
c=collections.Counter(A)
l=list(c.values())
h=[]
for i in range(len(l)):
    heappush(h,l[i])
h2=[]
for i in range(len(l)):
    heappush(h2,heappop(h))
s=sum(h2)
m=[0]*(N+1)
for i in range(N):
    br=bisect_right(h2,s//(i+1))
    if m[br] != 0:
        sbr = m[br]
    else:
        sbr=sum(h2[:br])
        m[br]=sbr
    print(sbr//(i+1-(len(h2)-br)))