Игра в города - 1

Известная игра в города устроена следующим образом: первый участник называет какой-нибудь город, следующий - город, название которого начинается на ту же букву, на какую кончается название предыдущего города и т.д. Таким же образом можно играть, например, не в города, а, например, в названия животных.

Вам дан словарик из допустимых для игры слов. Определить, возможно ли сыграть в эту игру так, чтобы каждое слово было использовано ровно один раз.

Входные данные
В первой строке входного файла записано число N - количество слов в словаре, а в последующих N строках - сами слова (1≤N≤1000). Каждое слово состоит не более чем из 10 маленьких латинских букв. Слова в словаре расположены в произвольном порядке. Если какое-то слово в словаре встречается несколько раз, то это означает, что в процессе игры оно должно быть использовано такое же количество раз.

Выходные данные
В выходной файл вывести слова в том порядке, в каком они должны быть названы в процессе игры (вывести любой вариант), или сообщение "NO", если такая игра невозможна.

Пример входного и выходного файлов
INPUT.TXT OUTPUT.TXT
6
aaa
baba
aaa
aab
aaab
mama
  
mama
aaa
aab
baba
aaa
aaab
 
4
mama
mama
papa
arbat
  
NO
 

Игра в города - 2

См. условие задачи "Игра в города - 1", однако требуется из заданных слов построить как можно более длинную цепочку для игры в такую игру

Входные данные
Такие же как в задаче "Игра в города - 1".

Выходные данные
В выходной файл вывести длину цепочки, а затем слова в том порядке, в каком они должны быть названы в процессе игры (вывести любой вариант).

Пример входного и выходного файлов
INPUT.TXT OUTPUT.TXT
6
aaa
baba
aaa
aab
aaab
mama
  
6
mama
aaa
aab
baba
aaa
aaab
 
4
mama
mama
papa
arbat
  
2
mama
arbat
 

Корни многочлена

Напишите программу, которая ищет все рациональные решения уравнения anxn+an-1xn-1+...+a1x+a0 = 0 .

Входные данные
Во входном файле записано число n (степень многочлена), 1≤n≤10, и коэффициенты многочлена в порядке an, an-1, ..., a1, a0 (|ai|<1000). Все коэффициенты - целые числа.

Выходные данные
В выходной файл вывести все различные рациональные корни многочлена в возрастающем порядке. Каждое рациональное число выводится в отдельной строке в виде пары целых чисел - числителя и знаменателя, разделенных пробелом. При этом дробь должна быть несократимой, и знаменатель - быть строго больше нуля. Если рациональных корней нет, вывести сообщение "NO SOLUTION".

Пример входного и выходного файлов
INPUT.TXT OUTPUT.TXT
6
1 0 -7 5 0 7 -6
  
-3 1
1 1
2 1
 

Игра в 16

Рассмотрим следующую игру: двое по очереди заполняют таблицу 4x4 числами от 1 до 16, причем каждое из этих чисел можно использовать только один раз. Когда вся таблица заполнена, игроки вычисляют каждый свое число. Первый игрок считает произведения чисел в каждой строке и берет сумму этих произведений, а второй игрок - произведения чисел в каждом столбце и берет опять же сумму этих произведений. Чье число больше - тот и победил.

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

Входные данные
Во входном файле записано текущее состояние таблицы 4х4, свободные клетки отмечены числом 0. Все числа разделяются пробелами и (или) символами перевода строки.

Выходные данные
Ваша программа должна, играя за первого игрока, совершить один ход и в выходной файл записать состояние таблицы после вашего хода (помечая свободные клетки, как и прежде 0).

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

Вы не имеете права создавать временные файлы.

Пример входного и выходного файлов
INPUT.TXT OUTPUT.TXT
1 2 3 4
5 6 7 8
9 10 11 12
0 0 0 16
  
1 2 3 4
5 6 7 8
9 10 11 12
15 0 0 16