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

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