eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Разбиение на пары

Разбиение на пары

Лимит времени 1 секунда
Лимит использования памяти 128 MiB

Космические археологи обнаружили на планете в соседней звездной системе n древних артефактов, которые они пронумеровали от 1 до n. Каждый артефакт имеет k различных параметров, каждый параметр характеризуется целым числом. Артефакт i имеет параметры a[i,1], a[i,2], ... a[i,k]. Оказалось, что первые параметры у всех артефактов различны: для всех ij выполнено a[i,1]a[j,1], при этом другие параметры у артефактов могут совпадать.

Учёные также обнаружили текст, в соответствии с которым для активации артефактов их необходимо особым образом разбить на пары и совместить. Разбиение артефактов на пары является корректным, если для каждого t от 1 до k можно выбрать такое число b[t], что оно лежит на отрезке между значениями t-го параметра артефактов каждой пары. То есть, если артефакты i и j образуют пару, должно выполняться условие a[i,t]b[t]a[j,t] или условие a[i,t]b[t]a[j,t].

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

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

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

В первой строке заданы целые числа n и k (2n2 * 10^5, n чётно, 1k7) - количество артефактов и количество параметров. В следующих n строках задано по k целых чисел a[i,1], a[i,2], ..., a[i,k] - параметры артефактов (-10^9a[i,j]10^9, все значения a[i,1] различны).

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

Выведите "NO", если требуемого разбиения на пары не существует.

В противном случае выведите "YES" в первой строке. Далее выведите n / 2 строк, в каждой строке выведите по два числа - номера артефактов, из которых следует составить пару. Каждый артефакт должен быть выведен ровно один раз.

Если существует несколько корректных разбиений артефактов на пары, разрешается вывести любое из них.

Пример

Входные данные #1
6 2
8 6
1 5
6 3
3 1
4 7
7 2
Выходные данные #1
YES
4 1
5 6
2 3
Входные данные #2
4 3
1 -1 -1
2 1 1
3 -1 1
4 1 -1
Выходные данные #2
NO
Источник 2018 Всероссийская олимпиада школьников по информатике, Региональный этап, день 2, Москва, 28 января 2019, Задача D