Система цифрових захищених сховищ використовує вкладені контейнери шифрування, де контейнери з нижчим рівнем шифрування розміщуються всередині контейнерів з вищим рівнем. Захищене сховище можна розшифрувати, щоб отримати доступ до контейнера з нижчим рівнем шифрування всередині, у якого, в свою чергу, також є контейнер всередині і так далі.
Корпоративний центр обробки даних нещодавно завершив міграцію системи, під час якої було перенесено кілька наборів сховищ з подібними протоколами шифрування. Кожен набір відрізнявся лише кількістю вкладених рівнів шифрування. На жаль, під час процесу міграції автоматизований скрипт дав збій і розділив усі набори сховищ, розмістивши всі окремі контейнери шифрування у послідовність.
У послідовності виявилось контейнерів, кожен з яких має цілочисловий рівень шифрування. Вам необхідно зібрати набори сховищ, не знаючи ні кількості наборів, ні числа контейнерів у кожному з них. Відомо лише те, що кожен з наборів складається з контейнерів з послідовними рівнями шифрування від до деякого значення , яке може змінюватись від набору до набору.
Під час збірки Вам потрібно дотримуватись таких правил:
Ви можете вкласти контейнер чи групу контейнерів лише всередину контейнера з вищим рівнем шифрування.
Дві групи контейнерів можна об'єднати, лише якщо вони стоять поряд у послідовності.
Коли контейнер стає членом групи, його вже неможливо перенести у іншу групу чи назавжди відокремити від групи. Його можна лише тимчасово відокремити під час злиття двох груп.
Процесорний час дуже цінний, тому збірку потрібно здійснити якомога швидше. Єдиною операцією, яка вимагає затрат часу у цій задачі, є розшифрування та відповідно повторне шифрування контейнера, тому Ви хочете мінімізувати їх кількість. Наприклад, найменша кількість операцій розшифрування (і відповідно операцій повторного шифрування) при комбінуванні груп [1, 2, 6] та дорівнює двом, так як достатньо розшифрувати лише контейнери з рівнями шифрування та . При об'єднанні груп [1, 2, 5] та достатньо трьох розшифрувань.
Напишіть програму, яка знайде найменшу кількість розшифрувань, достатніх для збірки усіх множин сховищ.
Вхідні дані складаються з одного тесту. Тест складається з двох рядків. Перший рядок містить одне ціле число (1 \le n \le 500) — кількість контейнерів, що стоять окремо у послідовності. Другий рядок містить натуральних чисел — рівні шифрування контейнерів у тому ж порядку, у якому вони розміщені у послідовності. Рівні шифрування контейнерів змінюються від до включно.
Вивести найменшу кількість операцій розшифрування, необхідних для збірки наборів сховищ. Якщо збірка неможлива (деякі контейнери могли бути втрачені під час міграції), то вивести слово impossible.
Приклад 1