Задача №111523. Руммикуб
В игре «Руммикуб» используются фишки, которые бывают четырех различных цветов, и на каждой из которых написано одно натуральное число от 1 до 13. Для каждого числа и для каждого цвета в наборе фишек есть ровно две соответствующие фишки, т.е. всего в наборе \(8\cdot 13 = 104\) фишки.
Число, написанное на фишке, будем называть ее достоинством; цвета будем обозначать латинскими буквами A, B, C и D, и каждую фишку будем обозначать, записывая сначала ее цвет, а потом — ее достоинство. Например, C12
— это фишка цвета C и достоинством 12.
Комбинацией в игре называется набор из как минимум трех фишек, удовлетворяющий любому из следующих условий:
- Достоинства всех фишек одинаковы, а цвета — попарно различны; или
- Цвета всех фишек одинаковы, а достоинства являются последовательными натуральными числами.
Например, следующие наборы фишек являются комбинациями:
-
C12
,A12
,B12
; -
C12
,A12
,B12
,D12
; -
C5
,C6
,C7
; -
A3
,A4
,A5
,A6
,A7
.
При этом следующие наборы не являются комбинациями:
-
A3
,B3
(слишком мало фишек); -
A3
,B3
,C3
,D3
,B3
(цвета повторяются); -
A3
,A4
,A4
,A5
,A6
(достоинства повторяются); -
A3
,A4
,A6
,A7
,A8
(число 5 пропущено).
Одна из основных задач в руммикубе состоит в том, чтобы данный набор фишек распределить на комбинации так, чтобы каждая фишка входила ровно в одну комбинацию. Напишите программу, которая будет это делать.
В первой строке входного файла находится одно натуральное число \(K\) — количество фишек. Далее следуют \(K\) строк, на каждой из которых находится описание одной фишки — цвет и достоинство.
Гарантируется, что эти фишки являются корректным подмножеством фишек из некоторого комплекта для игры в руммикуб; т.е. гарантируется, что каждый цвет — это латинская заглавная буква от A до D, что каждое достоинство — это натуральное число, не превосходящее 13, и что для для каждой пары (цвет, достоинство) в наборе есть не более двух таких фишек.
Если данный набор фишек можно разбить на комбинации так, чтобы каждая фишка входила ровно в одну комбинацию, то в первую строку выходного файла выведите одно число \(M\) — количество комбинаций в вашем решении. Далее выведите \(M\) строк, в \(i\)-ой из которых выведите \(i\)-ую комбинацию. А именно, сначала выведите количество фишек в комбинации, а потом сами фишки, разделенные между собой и отделенные от количества фишек пробелами. В пределах каждой комбинации фишки можете выводить в произвольном порядке; комбинации также можете выводить в произвольном порядке.
Если есть несколько решений, выведите любое. Если решений нет, то выведите в выходной файл одно число -1
.
3 A2 A3 A5
-1
3 A2 A4 A3
1 3 A2 A4 A3
7 A12 A13 A13 B13 C13 D13 A11
2 3 A11 A12 A13 4 A13 B13 C13 D13