#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main()
{
int grid_raw[] = { 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 3, 3, 3, 2, 2, 4, 1, 5, 3, 3, 6, 2, 6, 4, 5, 5, 5, 3, 6, 2, 6, 4, 4, 5, 5, 5, 6, 6, 6, 4, 7, 7, 8, 5, 8, 8, 8, 4, 7, 7, 8, 8, 8, 8, 8, 4, 7, 7, 7, 7, 8, 8, 8};
vector<int> grid(grid_raw, grid_raw + sizeof grid_raw / sizeof *grid_raw);
map<int, int> buckets;
for (vector<int>::iterator i = grid.begin(); i != grid.end(); ++i)
{
++buckets[*i];
}
vector<int> sorted;
for (map<int, int>::iterator b = buckets.begin(); b != buckets.end(); ++b)
{
sorted.insert(sorted.end(), b->second, b->first);
}
for (vector<int>::iterator i = sorted.begin(); i != sorted.end(); ++i) cout << *i << ", ";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CglpbnQgZ3JpZF9yYXdbXSA9IHsgMSwgMSwgMiwgMiwgMiwgMiwgMiwgMiwgMSwgMSwgMSwgMywgMywgMywgMiwgMiwgNCwgMSwgNSwgMywgMywgNiwgMiwgNiwgNCwgNSwgNSwgNSwgMywgNiwgMiwgNiwgNCwgNCwgNSwgNSwgNSwgNiwgNiwgNiwgNCwgNywgNywgOCwgNSwgOCwgOCwgOCwgNCwgNywgNywgOCwgOCwgOCwgOCwgOCwgNCwgNywgNywgNywgNywgOCwgOCwgOH07Cgl2ZWN0b3I8aW50PiBncmlkKGdyaWRfcmF3LCBncmlkX3JhdyArIHNpemVvZiBncmlkX3JhdyAvIHNpemVvZiAqZ3JpZF9yYXcpOwoJCgltYXA8aW50LCBpbnQ+IGJ1Y2tldHM7Cglmb3IgKHZlY3RvcjxpbnQ+OjppdGVyYXRvciBpID0gZ3JpZC5iZWdpbigpOyBpICE9IGdyaWQuZW5kKCk7ICsraSkKCXsKCQkrK2J1Y2tldHNbKmldOwoJfQoJCgl2ZWN0b3I8aW50PiBzb3J0ZWQ7Cglmb3IgKG1hcDxpbnQsIGludD46Oml0ZXJhdG9yIGIgPSBidWNrZXRzLmJlZ2luKCk7IGIgIT0gYnVja2V0cy5lbmQoKTsgKytiKQoJewoJCXNvcnRlZC5pbnNlcnQoc29ydGVkLmVuZCgpLCBiLT5zZWNvbmQsIGItPmZpcnN0KTsKCX0KCQoJZm9yICh2ZWN0b3I8aW50Pjo6aXRlcmF0b3IgaSA9IHNvcnRlZC5iZWdpbigpOyBpICE9IHNvcnRlZC5lbmQoKTsgKytpKSBjb3V0IDw8ICppIDw8ICIsICI7CglyZXR1cm4gMDsKfQ==
1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,