#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool cmp(pair<int, int> a, pair<int, int> b) {
if(a.second == b.second) {
return a.first < b.first;
}
return a.second > b.second;
}
void sortByFreq(int a[], int n) {
unordered_map<int, int> m;
for(int i = 0; i < n; i++) {
m[a[i]]++;
}
vector<pair<int, int>> v;
unordered_map<int, int> :: iterator it;
for(auto it: m) {
// cout<<it->first<<" "<<it->second<<endl;
v.push_back({it.first, it.second});
}
for(int i = 0; i < v.size(); i++) {
cout<<v[i].first<<" " ;
}
cout<<endl;
sort(v.begin(), v.end(), cmp);
for(auto i : v) {
int s = i.second;
while(s > 0) {
cout<<i.first<<" " ;
s--;
}
}
}
int main() {
int a[] = { 2, 5, 2, 6, -1, 9999999, 5, 8, 8, 8 };
int n = sizeof(a) / sizeof(a[0]);
sortByFreq(a, n);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgY21wKHBhaXI8aW50LCBpbnQ+IGEsIHBhaXI8aW50LCBpbnQ+IGIpIHsKCWlmKGEuc2Vjb25kID09IGIuc2Vjb25kKSB7CgkJcmV0dXJuIGEuZmlyc3QgPCBiLmZpcnN0OwoJfQoJCglyZXR1cm4gYS5zZWNvbmQgPiBiLnNlY29uZDsKfQoKdm9pZCBzb3J0QnlGcmVxKGludCBhW10sIGludCBuKSB7CgkKCXVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IG07CgkKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKCQltW2FbaV1dKys7Cgl9Cgl2ZWN0b3I8cGFpcjxpbnQsIGludD4+IHY7Cgl1bm9yZGVyZWRfbWFwPGludCwgaW50PiA6OiBpdGVyYXRvciBpdDsKCWZvcihhdXRvIGl0OiBtKSB7CgkJLy8gY291dDw8aXQtPmZpcnN0PDwiICAgIjw8aXQtPnNlY29uZDw8ZW5kbDsKCQl2LnB1c2hfYmFjayh7aXQuZmlyc3QsIGl0LnNlY29uZH0pOwoJfQoJZm9yKGludCBpID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspIHsKCQkKCQljb3V0PDx2W2ldLmZpcnN0PDwiICAgIiA7Cgl9Cgljb3V0PDxlbmRsOwoJc29ydCh2LmJlZ2luKCksIHYuZW5kKCksIGNtcCk7CgkKCWZvcihhdXRvIGkgOiB2KSB7CgkJaW50IHMgPSBpLnNlY29uZDsKCQl3aGlsZShzID4gMCkgewoJCQkJY291dDw8aS5maXJzdDw8IiAgICIgOwoJCQkJcy0tOwoJCX0KCQoJfQoJCn0KCmludCBtYWluKCkgewoJaW50IGFbXSA9IHsgMiwgNSwgMiwgNiwgLTEsIDk5OTk5OTksIDUsIDgsIDgsIDggfTsKICAgaW50IG4gPSBzaXplb2YoYSkgLyBzaXplb2YoYVswXSk7CiAgIHNvcnRCeUZyZXEoYSwgbik7CglyZXR1cm4gMDsKfQ==