ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

2230. Пазлы для любителя

Ограничение времени: 2.0 секунды
Ограничение памяти: 256 МБ
Ямочка большая любительница головоломок, и поэтому недавно купила себе новый пазл. Собранный пазл представляет собой прямоугольную таблицу из K строк и L столбцов, из K · L квадратиков одинакового размера, называемых кусочками пазла. Каждая сторона кусочка пазла может быть углублением определенного типа, либо штырьком определенного типа, либо гладкой, если эта сторона является границей пазла. Если два кусочка в собранном пазле соседние по стороне, то у одного кусочка на этой стороне должен быть штырёк, а у другого углубление, причем одинакового типа.
К сожалению, Ямочка оказалась не очень опытной в сборке пазлов, поэтому купила набор для новичков: в данном наборе типы всех штырьков различны, типы всех углублений тоже. Более формально: каждому типу соединения соответствует ровно один штырёк и одно углубление, либо не соответствует ничего.
Вскрыв коробку с пазлом и немного потыкав кусочки друг с другом, Ямочка поняла, что головоломки это не её, поэтому задача собрать данный пазл ложится целиком и полностью на вас.

Исходные данные

В первой строке дано целое число N (1 ≤ N ≤ 105) — количество кусочков пазла.
В следующих N строках дается по 4 целых числа li, ui, ri, di (−106 ≤ li, ui, ri, di ≤ 106) — описание соответственно левой, верхней, правой и нижней стороны i-го кусочка пазла. Пусть t — одно из этих чисел, тогда:
  • если t > 0, то на этой стороне расположен штырёк типа |t|;
  • если t < 0, то на этой стороне расположено углубление типа |t|;
  • если t = 0, то эта сторона гладкая и обязана находиться на внешней границе пазла.
Конечно же, любой кусочек можно вращать по часовой стрелке на любой градус, кратный 90∘.

Результат

В первой строке выведите два числа K, L (1 ≤ K, L ≤ N; K × L = N).
В следующих K строчках выведите по L целых чисел — номера кусочков в порядке ввода, которые должны стоять на этом месте в собранном пазле.
Каждая деталь должна встретиться в ответе ровно один раз. Повороты деталей в выходных данных указывать не требуется. Ответ считается корректным, если существует набор поворотов, при котором все соседние стороны совместимы, а гладкие стороны находятся на границе.
Гарантируется, что ответ всегда есть. Если подходящих ответов несколько, выведите любой из них.

Пример

исходные данныерезультат
6
0 0 -1 4
1 0 5 3
-5 0 0 -6
7 6 0 0
2 -3 -7 0
0 -4 -2 0
2 3
1 2 3
6 5 4
Автор задачи: Яков Малин
Источник задачи: Квалификационный тур Уральского регионального чемпионата ICPC 2026