#include <iostream>
#include <vector>
#include <tuple>
#include <set>
#include <algorithm>
#include <iterator>
using namespace std;

int main() {
	std::vector<int> data = {7, 9, 2, 7, 9};
	std::multiset<int> count(data.begin(), data.end());
	std::sort(
	    data.begin()
	,   data.end()
	,   [&](int a, int b) {
	        int ca = count.count(a);
	        int cb = count.count(b);
	        return std::tie(ca, a) > std::tie(cb, b);
	    }
	);
	std::copy(data.begin(), data.end(), std::ostream_iterator<int>(std::cout, " "));
	return 0;
}