Рассмотрим известную игру Бум (aka Шляпа) с упрощенными правилами.
В игре участвуют n команд по два человека. Цель игры: объяснить слова своему напарнику, не используя однокоренные и созвучные.
Игрок номер j команды с номером i (1 ≤ i ≤ n, 1 ≤ j ≤ 2) характеризуется двумя числами: aij и bij. Числа обозначают соответственно навык объяснения и навык понимания данного игрока.
Так же для игры используются m карточек. На каждой карточке написано слово. Карточка с номером k (1 ≤ k ≤ m) характеризуется числом ck — сложностью слова, написанного на ней.
Перед началом игры карточки складываются в колоду и перемешиваются. Далее команды делают ходы в следующем порядке: 1-й игрок 1-й команды, 1-й игрок 2-й команды, ... , 1-й игрок n-ой команды, 2-й игрок 1-й команды, ... , 2-й игрок n-й команды, 1-й игрок 1-й команды и т.д.
Каждый ход длится t секунд. Ход производится следующим образом: изначально время хода равно t. Пока время хода больше 0, ходящий игрок берет верхнюю карточку из колоды и начинает объяснять слово на ней своему напарнику. Время, за которое j-й игрок i-й команды объяснит слово с карточки k своему напарнику (q-му игроку i-й команды) равно max(1, ck - (aij + biq) - dik) (если j = 1, то q = 2, иначе q = 1). Величина dik — это количество секунд, которое i-я команда уже потратила на объяснение слова k за предыдущие ходы. Изначально, все dik равны 0. Если команда успевает до конца хода отгадать слово, то из времени хода вычитается указанное выше время, отгаданная карточка выходит из игры, принося команде одно очко, и ход продолжается. Если же команда не успевает отгадать слово, то карточка кладется вниз колоды, а dik увеличивается на время хода, потраченное на объяснение этого слова на текущем ходу. Таким образом, когда этой команде достанется это же слово, они начнут его объяснять не с начала, а с того места, на котором остановились. Игра заканчивается тогда, когда все m карточек отгаданы.
Вам даны n команд и колода из m карточек. Вам необходимо для каждой команды определить, сколько очков будет у этой команды в конце игры, и какие слова эта команда отгадает.
Выходные данные
Выведите n строк. В i-й строке сначала выведите число si — количество очков, заработанных i-й командой. Далее выведите si слов, разделяя их пробелами, — слова с карточек, отгаданных командой i в том порядке, в котором они были отгаданы.