D. Миссия непроходима
ограничение по времени на тест
3 seconds
ограничение по памяти на тест
256 megabytes
ввод
стандартный ввод
вывод
стандартный вывод

На прилавках магазинов появилась долгожданная игра The Colder Scrools V: XXXvodsk. Игра оказалась дьявольски сложна, и большинство студентов не могут пройти последнюю миссию («Мы не ходим в XXXводск...»), в связи с чем зимняя сессия оказалась под угрозой. Ректор уже подумывал о переносе сессии на апрель (ему и самому хотелось пройти эту миссию), когда на пороге его кабинета возник незнакомец. «Здравствуйте. Меня зовут Петрович, и я решаю любые проблемы», — сказал он.

Теперь они уже сидят вместе и все равно не могут пройти эту миссию. Ведь чтобы одолеть финального босса, требуется показать все свое мастерство в искусстве управления буквами. Нужно быть настоящими волшебниками, а уж что говорить, когда волшебники начинают соревноваться...

Но, давайте более формально: дана строка и набор целых чисел ai. Разрешается выбрать любую подстроку, являющуюся палиндромом, и удалить ее. При этом мы получаем количество очков равное ak, где k — длина удаляемого палиндрома. Для некоторых k ak = -1, что означает, что удалять подстроки-палиндромы такой длины запрещено. После удаления подстроки оставшаяся часть «сдвигается», то есть строка ни в какой момент времени не содержит пропусков. Этот процесс повторяется, пока строка содержит хотя бы одну подстроку-палиндром, которую можно удалить. Все полученные очки суммируются.

Определите, какое максимальное количество очков можно получить.

«Эх», — сказал, вставая из-за стола, Петрович, — «когда-то я тоже любил удалять палиндромы, как и вы, но потом мне прострелили колено».

Входные данные

Первая строка содержит целое число l (1 ≤ l ≤ 150) — длину строки .

Вторая строка содержит ровно l целых чисел ak ( - 1 ≤ ak ≤ 105) — бонусы за удаления.

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

Выходные данные

Выведите одно целое число — максимальное количество очков, которое можно получить, играя на данной строке.

Примеры
Входные данные
7
-1 -1 -1 -1 -1 -1 -1
abacaba
Выходные данные
0
Входные данные
7
1 -1 -1 -1 -1 -1 -1
abacaba
Выходные данные
7
Входные данные
7
1 5 -1 -1 -1 -1 10
abacaba
Выходные данные
16
Примечание

В первом примере у нас нет возможности удалить ни одной подстроки, поэтому лучший результат 0. Во втором примере нам разрешено удалять палиндромы длины только 1, таким образом, удалив всю строку, мы получим 7 очков. В третьем примере следующая оптимальная стратегия: сначала удаляем символ c, затем строку aa, затем bb, и последнюю aa. При этом получаем 1 + 3 * 5 = 16 очков.