Задача F. Предварительные результаты голосования

Входной файл:Стандартный вход   Ограничение времени:4 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб

Условие

Николай участвует в выборах президента студенческого совета.

По результатам предварительного голосования он занимает место N+1.

Пользуясь личными связями, он получил информацию о том, сколько каждый из кандидатов набрал голосов.

Теперь он хочет выяснить, кто обошел его и занимает позицию N.

Вам необходимо реализовать функцию max(n, lines), которая по заданному числу N и информации о кандидатах, вернет имена тех, кто занимает позицию N в рейтинге, составленному по убыванию количества проголосовавших.

Стоит заметить, что несколько кандидатов могут набрать одинаковое количество голосов.

При решении задачи используйте Java Stream API и следующий класс:


import java.util.*;
import java.util.stream.*;

public class Solution
{
  public static Stream<String> max(int n, Stream<String> lines)
  {
    // Ваш код
  }
}
  

Формат входных данных

На вход вашей функции подается целое число N и Stream строк, каждая из которых имеет следующий формат: [Имя кандидата] [Количество проголосовавших]

Формат выходных данных

Код решения должен содержать только класс Solution с реализацией функции max. Он не должен ничего выводить.

Выходной поток Stream должен быть отсортирован в лексикографическом порядке по возрастанию.

Ограничения

1 ≤ N ≤ 106

Примеры тестов

Стандартный вход Стандартный выход
1
2
Bron 1
Li 8
Abel 3
John 6
Fred 8
Jonathan 9
Fred
Li

0.033s 0.007s 15