Ускорение алгоритма ранжирования

На ранних этапах турнира инженеры-программисты использовали алгоритм ранжирования, основанный на пузырьковой сортировке. Когда участников было мало, это работало нормально. Но теперь команд стало слишком много, и вас просят ускорить алгоритм.

У каждой команды есть уникальный номер (идентификатор) и набранный ею результат (счёт). Необходимо упорядочить команды по убыванию результатов (сначала команды с наибольшими очками, в конце — с наименьшими). При этом команды, набравшие одинаковое количество очков, должны следовать в том же порядке, в каком они шли во входных данных. Значит, требуется стабильная сортировка.

Входные данные

Первая строка входных данных содержит одно целое число n (1 ≤ n ≤ ).

Следующие n строк содержат разделённые пробелом пары (), описывающие уникальный идентификатор команды и её результат.

Выходные данные

Программа должна вывести n строк. В каждой строке нужно указать два целых числа: id команды и её результат.

Примеры

Входные данные

Выходные данные

6
1 10
4 20
5 7
2 20
8 10
9 15

4 20
2 20
9 15
1 10
8 10
5 7

Constraints

Time limit: 5 seconds

Memory limit: 512 MB

Output limit: 10 MB

To check your solution you need to sign in
Sign in to continue