#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Num {
int value;
int count;
};
bool Mycmp(Num n1, Num n2) {
if (n1.count > n2.count) {
return true;
}
else if (n1.count == n2.count&&n1.value < n2.value) {
return true;
}
else {
return false;
}
}
vector<Num> vec;
void Insert(int n) {
bool have = false;
//先遍历向量,若存在则直接加1
for (int i = 0; i < vec.size(); i++) {
if (vec[i].value == n) {
have = true;
vec[i].count++;
}
}
if (!have) {
Num t;
t.value = n;
t.count = 1;
vec.push_back(t);
}
}
int main()
{
int n,t;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> t;
Insert(t);
}
sort(vec.begin(), vec.end(), Mycmp);
for (int i = 0; i < vec.size(); i++) {
cout << vec[i].value << " " << vec[i].count << endl;
}
return 0;
}