eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Разворот последовательности

Разворот последовательности

Фермер Джон выстроил n своих коров в ряд, чтобы сделать фото. Высота i-ой коровы в этом ряду есть a(i), и ФД думает, фото будет эстетически приятным, если будет иметь большую возрастающую по росту коров подпоследовательность.

Напомним, подпоследовательность это подмножество a(i1), a(i2), .. , a(ik) элементов из последовательности, где индексы i1 < i2 < ... < ik. Мы говорим, что подпоследовательность возрастающая, если a(i1) ≤ a(i2) ≤ ... ≤ a(ik).

ФД может переупорядочивать коров следующим образом выбрать любую подпоследжовательность и реверсировать её элементы

Например, если мы имееем список

1 6 2 3 4 3 5 3 4

мы можем реверсировать следующие элементы

1 6 2 3 4 3 5 3 4
  ^         ^ ^ ^

получим

1 4 2 3 4 3 3 5 6
  ^         ^ ^ ^

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

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

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

Первая строка содержит число n (1n50). Остальные n строк содержат a(1) .. a(n), целые числа в интервале 1 .. 50.

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

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

Лимит времени 1 секунда
Лимит использования памяти 128 MiB
Входные данные #1
9
1
2
3
9
5
6
8
7
4
Выходные данные #1
9
Источник 2017 USACO Январь, Платина