#define max 10000
void chat(int left,int right,int array1[max][3]);
main(){
int n,a[max][3],b,c,i,j;
scanf("%d",&n);
for(i=0;i<=max-1;i++)
a[i][1]=-1;
b=0;
for(i=1;i<=n;i++){
scanf("%d",&c);
for(j=0;j<=n-1;j++){
if(a[j][1]==c){
a[j][2]++;
break;
}
if(a[j][1]==-1){
a[j][1]=c;
a[j][2]=1;
b++;
break;
}
}
}
/*c=0;
for(i=0;i<b;i++){
for(j=i;j<b;j++){
if(a[i][1]>a[j][1]){
c=a[i][1];
a[i][1]=a[j][1];
a[j][1]=c;
c=a[i][2];
a[i][2]=a[j][2];
a[j][2]=c;
}
}
}*/
chat(0,b-1,a);
for(i=0;i<b;i++)
if(a[i][1]!=-1)
printf("%d %d\n",a[i][1],a[i][2]);
//getch();
}
void chat(int left,int right,int array[max][3]){
int i,j,m,t;
i=left;
j=right;
m=array[(left+right)/2][1];
do{
while((array[i][1]<m)&&(i<right))
i++;
while((array[j][1]>m)&&(j>left))
j--;
if(i<=j){
t=array[i][1];
array[i][1]=array[j][1];
array[j][1]=t;
t=array[i][2];
array[i][2]=array[j][2];
array[j][2]=t;
i++;
j--;
}
}while(i<=j);
if(left<j)
chat(left,j,array);
if(right>i)
chat(i,right,array);
}
#include<algorithm>
#include<iostream>
using namespace std;
long long a[200010],n,s,i;
int main()
{
cin>>n;
for(i=1;i<=n;i++) scanf("%lld",&a[i]);
sort(a+1,a+1+n);s=1;
for(i=2;i<=n+1;i++)
{
if(a[i]==a[i-1]) s++;
else
{
printf("%lld %lld\n",a[i-1],s);
s=1;
}
}
return 0;
}