#include <map>
#include <algorithm>
#include <iostream>

int main()
{
    int array[8] = {6,1,7,8,6,6,1,9};
    
    // A map to store num => freq 
    std::map <int, int> freq;
    
    // A map to store freq(can be duplicate) => num 
    std::multimap <int, int> freqCounts;
    
    // Store num => frequency
    for (int i = 0 ; i < 8; i++)
    {
    	freq[array[i]] += 1;
    }
    
    // Now Store freq => num
	for(auto const & iter : freq)
	{
		freqCounts.insert (std::pair<int,int>(iter.second, iter.first)); 
	}

	// Print in reverse order i.e. highest frequency first
	for (std::multimap<int,int>::reverse_iterator rit=freqCounts.rbegin(); rit!=freqCounts.rend(); ++rit)
	{
    	std::cout << rit->second << " : " << rit->first << '\n';
	}
	
  	return 0;
}
