Система захищених сховищ#5657

Система захищених сховищ

5 секунд
256 мегабайтів
Дуже складна

Система цифрових захищених сховищ використовує вкладені контейнери шифрування, де контейнери з нижчим рівнем шифрування розміщуються всередині контейнерів з вищим рівнем. Захищене сховище можна розшифрувати, щоб отримати доступ до контейнера з нижчим рівнем шифрування всередині, у якого, в свою чергу, також є контейнер всередині і так далі.

Корпоративний центр обробки даних нещодавно завершив міграцію системи, під час якої було перенесено кілька наборів сховищ з подібними протоколами шифрування. Кожен набір відрізнявся лише кількістю вкладених рівнів шифрування. На жаль, під час процесу міграції автоматизований скрипт дав збій і розділив усі набори сховищ, розмістивши всі окремі контейнери шифрування у послідовність.

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

Під час збірки Вам потрібно дотримуватись таких правил:

Процесорний час дуже цінний, тому збірку потрібно здійснити якомога швидше. Єдиною операцією, яка вимагає затрат часу у цій задачі, є розшифрування та відповідно повторне шифрування контейнера, тому Ви хочете мінімізувати їх кількість. Наприклад, найменша кількість операцій розшифрування (і відповідно операцій повторного шифрування) при комбінуванні груп [1, 2, 6] та дорівнює двом, так як достатньо розшифрувати лише контейнери з рівнями шифрування та . При об'єднанні груп [1, 2, 5] та достатньо трьох розшифрувань.

Напишіть програму, яка знайде найменшу кількість розшифрувань, достатніх для збірки усіх множин сховищ.

Вхідні дані

Вхідні дані складаються з одного тесту. Тест складається з двох рядків. Перший рядок містить одне ціле число (1 \le n \le 500) — кількість контейнерів, що стоять окремо у послідовності. Другий рядок містить натуральних чисел — рівні шифрування контейнерів у тому ж порядку, у якому вони розміщені у послідовності. Рівні шифрування контейнерів змінюються від до включно.

Вихідні дані

Вивести найменшу кількість операцій розшифрування, необхідних для збірки наборів сховищ. Якщо збірка неможлива (деякі контейнери могли бути втрачені під час міграції), то вивести слово impossible.

Приклади

Приклад 1

Loading
Loading