A. Палиндромы

Непустая строка называется палиндромом, если она одинаково читается как слева направо, так и справа налево. Задана строка S из N прописных букв латинского алфавита.Сколько существует способов вычеркнуть из нее некоторый (возможно пустой) набор символов, чтобы остался палиндром. Способы, отличающиеся порядком вычеркивания этих символов считаются одинаковыми.

Входные данные
В первой и единственной строке записано слово S (1≤N≤60).

Выходные данные
В первой и единственной строке должно содержаться найденное число способов.

Пример входного и выходного файлов
INPUT.TXT OUTPUT.TXT
BAOBAB  
  
22  
  

B. Service Pack

Известная своими нетрадиционными разработками фирма Macrohard решила выпустить пакет обновления (service pack), чудесным образом превращающий программный пакет Beds v1.0 в Beds v1.01. Этот пакет обновления состоит из последовательности команд следующих двух типов:

Команды исполняются по порядку. Длиной пакета обновления называется сумма длин отдельных его команд, причем длина команды Old равна L1 байт, а длина команды New равна (L2 + длина последовательности seq) байт.

Ваша задача: по содержимому пакетов Beds v1.0 и Beds v1.01 составить пакет обновления наименьшей длины.

Входные данные
Первая строка содержит числа L1 и L2, разделенные пробелом (1≤L1,L2≤100). Вторая строка содержит пакет Beds v1.0, а третья - версии 1.01. Пакеты представляют собой непустые последовательности строчных букв латинского алфавита длины не более 1000 символов.

Выходные данные
В первой строке файла должна быть указана найденная наименьшая длина пакета обновления, во второй стороке - число команд K в этом пакете. Последующие K строк должны содержать сам пакет обновления (по одной команде пакета в строке). Синтаксис этих команд таков:
<команда Old> ::= Old <начальная позиция P> <длина L>
<команда New> ::= New <последоваетельность seq строчных букв латинского алфавита>.
Названия команд и их аргументы должны отделяться друг от друга пробелами.

Пример входного и выходного файлов
INPUT.TXT OUTPUT.TXT
1 1
thisisanoldversion
thisisanewversion  
  
5
3
Old 1 8
New ew
Old 12 7
  

C. Контейнеры

Около необитаемого острова потерпело крушение почтовое судно, в трюме которого хранились N почтовых контейнеров, представляющих собой кубы равных размеров. Отважный почтальон Кругликов, пытавшийся спасти их, быстро понял, что единственный способ уберечь их от промокания - склеить из них столбик и оставить его плавать в вертикальном положении. К сожалению, разные контейнеры имеют разную стоимость. Помогите почтальону Кругликов решить эту непростую задачу, выбрав такое расположение контейнеров в столбике, чтобы суммарная стоимость C подмоченных контейнеров была наименьшей (контейнер промокает, если его дно оказывается ниже уровня воды).

Входные данные
В первой строке содержится целое число N (1≤N≤40). В последующих N строках содержатся описания контейнеров (по одному в строке) в виде ai bi ci, где ai - вес сухого (вне воды) i-го контейнера, bi - вес i-го контейнера под водой (положительные значения соответствуют напрвлению вниз (тонущий контейнер), а отрицательные - вверх (плавучий контейнер)), ci - стоимость i-го контейнера (0<ai≤50, -50≤bi≤50,1≤ci≤1000, ai, bi, ci - целые). Числа в строках разделяются одним пробелом.

Выходные данные
Первая строка файла должна содержать найденную стоимость C, а вторая -последовательность из N чисел - номеров контейнеров в порядке их расположения в столбике сверху вниз.

Пример входного и выходного файлов
INPUT.TXT OUTPUT.TXT
2
2 -1 3
8 -4 40
  
40
1 2