#include <iostream>
#include <algorithm>
#include <set>
#include <iterator>
#include <string>
 
int main()
{
	typedef std::multiset<std::string> mySet;
    typedef std::multiset<std::string>::iterator mySetItr;
 
	mySet mWords;
 
	mWords.insert("A");
	mWords.insert("A");
	mWords.insert("B");
 
	mySetItr it = std::begin(mWords), itend = std::end(mWords);
	std::for_each<mySetItr&>(it, itend, [&mWords, &it] (const std::string& word)
    {
        auto p = mWords.equal_range(word);
        int count = static_cast<int>(std::distance(p.first, p.second));
        std::cout << word << " " << count << std::endl;
        std::advance(it, count - 1);
    });
}
 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxzdHJpbmc+CgppbnQgbWFpbigpCnsKCXR5cGVkZWYgc3RkOjptdWx0aXNldDxzdGQ6OnN0cmluZz4gbXlTZXQ7CiAgICB0eXBlZGVmIHN0ZDo6bXVsdGlzZXQ8c3RkOjpzdHJpbmc+OjppdGVyYXRvciBteVNldEl0cjsKCglteVNldCBtV29yZHM7CgkKCW1Xb3Jkcy5pbnNlcnQoIkEiKTsKCW1Xb3Jkcy5pbnNlcnQoIkEiKTsKCW1Xb3Jkcy5pbnNlcnQoIkIiKTsKCQoJbXlTZXRJdHIgaXQgPSBzdGQ6OmJlZ2luKG1Xb3JkcyksIGl0ZW5kID0gc3RkOjplbmQobVdvcmRzKTsKCXN0ZDo6Zm9yX2VhY2g8bXlTZXRJdHImPihpdCwgaXRlbmQsIFsmbVdvcmRzLCAmaXRdIChjb25zdCBzdGQ6OnN0cmluZyYgd29yZCkKICAgIHsKICAgICAgICBhdXRvIHAgPSBtV29yZHMuZXF1YWxfcmFuZ2Uod29yZCk7CiAgICAgICAgaW50IGNvdW50ID0gc3RhdGljX2Nhc3Q8aW50PihzdGQ6OmRpc3RhbmNlKHAuZmlyc3QsIHAuc2Vjb25kKSk7CiAgICAgICAgc3RkOjpjb3V0IDw8IHdvcmQgPDwgIiAiIDw8IGNvdW50IDw8IHN0ZDo6ZW5kbDsKICAgICAgICBzdGQ6OmFkdmFuY2UoaXQsIGNvdW50IC0gMSk7CiAgICB9KTsKfQo=