#include <iostream>
#include <vector>
#include <string>
struct person //struktura pomocnicza
{ //laczy imie i ilosc wystapienia tego imienia
person(std::string str) { name = str;}
std::string name;
int count=1;
};
void quicksort(std::vector<struct person>& arr, int left, int right) //algorytm sortujacy quicksort
{ //przerobiony do sortowania struktur
person per("");
per = arr[(left + right) / 2];
int i, j;
i = left;
j = right;
do {
while (arr[i].count>per.count) i++;
while (arr[j].count<per.count) j--;
if (i <= j) {
std::swap(arr[i], arr[j]);
i++; j--;
}
} while (i <= j);
if (j>left) quicksort(arr, left, j);
if (i<right) quicksort(arr, i, right);
}
////////////////////////////////////////////////////MAIN////////////////////////////////////////////
int main()
{
std::string str;
int end = 0;
person s(""); //pomocnicza struktura
std::vector <struct person> per; //vector na struktury
per.reserve(100000);
////////////////////////WPROWADZANIE DANYCH/////////////////////////////
while (std::cin >> str >> str >> str) //w celu uproszczenia kodu postanowilem olac
{ //caly input przed druga spacja
s.name = str;
for (int ii = s.name.size() - 1; ii >= 0; ii--) //poprawiam wszystkie male litery na duze
{
s.name[ii]=toupper(s.name[ii]);
}
for (int i = 0; i < per.size(); i++) //jesli imie pojawia sie pierwszy raz to dodaje
{ //do vectora, w innym wypadku liczy powtorzenie
if (per[i].name == s.name) { per[i].count++; end = 1; }
}
if (end != 1)
{
per.push_back(s);
}
end = 0;
}
////////////////////////////SORTOWANIE IMION///////////////////////////////////////
quicksort(per, 0, per.size() - 1); //quicksort sortuje struktury wedlug ilosci powtorzen
for (int i = 0; i < per.size(); i++)
{
for (int ii = 0; ii < per.size() - 1; ii++) //jesli imiona wystapily tyle samo razy
{ //to sortuje je alfabetycznie algorytmem
if (per[ii].count == per[ii + 1].count) //babelkowym
{
for (int j = 0; j < per[ii].name.size(); j++)
{
if (per[ii].name[j] < per[ii + 1].name[j]) { break; }
else if (per[ii].name[j] > per[ii + 1].name[j])
{
std::swap(per[ii], per[ii + 1]);
break;
}
}
}
}
std::cout << per[i].name << " " << per[i].count << std::endl; //wypisuje imiona i ilosc powtorzen
}
return 0;
}