Розкладання Пасьянса#5864

Розкладання Пасьянса

2 секунди
64 мегабайти
Легка

"N-T пасьянс" — карткова гра для одного гравця. У грі використовується (3 \leq N \leq 15) карт, причому кожній карті відповідає унікальна пара її значення (ціле число у діапазоні ) і масті (, , , або ).

У початковому положенні всі карти розкладено у (4 \leq T \leq 8) стопок. При цьому кожна з перших (4N)\bmod T стопок містить по (4N\mathbin{/}T)+1 карт, інші — по 4N\mathbin{/}T карт (тут "/" і "bmod" означають цілочисельне ділення і залишок при діленні відповідно).

Якщо сума значень верхніх карт двох стопок дорівнює N+1, ці дві карти можна перемістити у відбій (незалежно від їхніх мастей). Це єдиний спосіб переміщувати карти.

Напишіть програму, яка визначає, яку максимальну кількість карт можна перемістити у відбій і як це зробити.

Вхідні дані

Перший рядок містить два цілих числа і . Далі йдуть рядків з описами карт відповідної стопки. Кожна карта описується її значенням (ціле число) і мастю (символ з ASCII-кодом 03 (), 04 (), 05 (), або 06 ()) без пропуску між ними. Описання різних карт однієї стопки розділені рівно одним пропуском, напрямок опису зліва направо відповідає порядку карт знизу вгору.

Приклад вхідних даних

Вихідні дані

Ваша програма повинна вивести ціле число — максимально можливу кількість карт, які можна перемістити у відбій. Потім пар чисел, по парі у рядку — номери стопок, з яких потрібно знімати карти на черговому ході.

Приклади

Приклад 1

Loading
Loading

Примітка

Якщо існує декілька способів розкладу (з однаковою максимальною сумарною кількістю знятих карт), виведіть довільний із них.