#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <vector>
using namespace std;
int nr;
int licznik=1;
string imie, nazwisko;
vector <string> imiona;
vector <int> ilosc;
vector <string> kolejnosc;
int main() {
cin>>nr;
for(int i=1; i<=nr; i++)
{
cin>>nazwisko>>imie;
transform(imie.begin(), imie.end(), imie.begin(), ::toupper);
imiona.push_back(imie);
}
imiona.push_back("a");
sort(imiona.begin(), imiona.end());
for(int g=0; g<imiona.size()-1; g++)
{
if(imiona[g]==imiona[g+1])
{
licznik++;
}
else
{
kolejnosc.push_back(imiona[g]);
ilosc.push_back(licznik);
licznik=1;
}
}
for(int s=0; s<kolejnosc.size(); s++)
{
for(int d=0; d<kolejnosc.size()-1; d++)
{
if(ilosc[d]<ilosc[d+1])
{
swap(ilosc[d], ilosc[d+1]);
swap(kolejnosc[d], kolejnosc[d+1]);
}
}
}
for(int c=0; c<kolejnosc.size(); c++)
{
cout<<kolejnosc[c]<<" "<<ilosc[c]<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHZlY3Rvcj4KCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG5yOwppbnQgbGljem5paz0xOwpzdHJpbmcgaW1pZSwgbmF6d2lza287CnZlY3RvciA8c3RyaW5nPiBpbWlvbmE7CnZlY3RvciA8aW50PiBpbG9zYzsKdmVjdG9yIDxzdHJpbmc+IGtvbGVqbm9zYzsKCgoKaW50IG1haW4oKSB7CgkKCWNpbj4+bnI7CgkKCWZvcihpbnQgaT0xOyBpPD1ucjsgaSsrKQoJewoJCWNpbj4+bmF6d2lza28+PmltaWU7CgkJdHJhbnNmb3JtKGltaWUuYmVnaW4oKSwgaW1pZS5lbmQoKSwgaW1pZS5iZWdpbigpLCA6OnRvdXBwZXIpOwoJCWltaW9uYS5wdXNoX2JhY2soaW1pZSk7Cgl9CglpbWlvbmEucHVzaF9iYWNrKCJhIik7Cglzb3J0KGltaW9uYS5iZWdpbigpLCBpbWlvbmEuZW5kKCkpOwoKCQoJZm9yKGludCBnPTA7IGc8aW1pb25hLnNpemUoKS0xOyBnKyspCgl7CQoJCWlmKGltaW9uYVtnXT09aW1pb25hW2crMV0pCgkJewoJCQlsaWN6bmlrKys7CgkJfQoJCQoJCWVsc2UKCQl7CgkJCWtvbGVqbm9zYy5wdXNoX2JhY2soaW1pb25hW2ddKTsKCQkJaWxvc2MucHVzaF9iYWNrKGxpY3puaWspOwoJCQlsaWN6bmlrPTE7CgkJfQoJCQoJfQoJCglmb3IoaW50IHM9MDsgczxrb2xlam5vc2Muc2l6ZSgpOyBzKyspCiAgICB7CiAgICAgICAgZm9yKGludCBkPTA7IGQ8a29sZWpub3NjLnNpemUoKS0xOyBkKyspCiAgICAgICAgewogICAgICAgICAgICBpZihpbG9zY1tkXTxpbG9zY1tkKzFdKQogICAgICAgICAgICB7CiAgICAgICAgICAgIAlzd2FwKGlsb3NjW2RdLCBpbG9zY1tkKzFdKTsKICAgICAgICAgICAgICAgIHN3YXAoa29sZWpub3NjW2RdLCBrb2xlam5vc2NbZCsxXSk7ICAgCgkJCX0KICAgICAgICAgICAgICAgCiAgICAgICAgfQogICAgfQoJCgoJZm9yKGludCBjPTA7IGM8a29sZWpub3NjLnNpemUoKTsgYysrKQoJewoJCWNvdXQ8PGtvbGVqbm9zY1tjXTw8IiAiPDxpbG9zY1tjXTw8ZW5kbDsKCX0KCQoJCglyZXR1cm4gMDsKfQ==