#include<bits/stdc++.h>
using namespace std;
int n,k;
string s;
bool f;
struct tp{
string mz;
int c;
}a[2000];
bool cmp(tp x,tp y){
if(x.c>y.c||(x.c==y.c&&x.mz>y.mz)){
return true;
}else{
return false;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s;
f=false;
for(int j=1;j<=k;j++){
if(a[j].mz==s){
a[j].c++;
f=true;
break;
}
}
if(f==false){
k++;
a[k].mz=s;
a[k].c=1;
}
}
sort(a+1,a+1+k,cmp);
for(int i=1;i<=k;i++){
cout<<a[i].mz<<" "<<a[i].c<<endl;
}
return 0;
}
/**************************************************************
Problem: 1499
User: hulaoshi
Language: C++
Result: Accepted
Time:11 ms
Memory:2168 kb
****************************************************************/