var a:array[1..200001] of longint;

i,j,k,m,n:longint;

procedure qsort(s,t:longint);

var i,j,mid,temp:longint;

begin

i:=s;j:=t;mid:=a[(s+t) div 2];

while i<=j do

begin

while a[i]<mid do inc(i);

while a[j]>mid do dec(j);

if i<=j then

begin

temp:=a[i];a[i]:=a[j];a[j]:=temp;

inc(i);dec(j);

end;

end;

if i<t then qsort(i,t);

if j>s then qsort(s,j);

end;

begin

readln(n);

for i:=1 to n do readln(a[i]);

qsort(1,n);

a[n+1]:=maxlongint;

k:=1;

for i:=2 to n+1 do

if a[i]<>a[i-1] then

begin writeln(a[i-1],' ',k); k:=1;end

else k:=k+1;

end.

/**************************************************************
	Problem: 2272
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/