Трішки знань з криптографії нікому не завадить
Нещодавно професор Л. розробив спеціальний шифр, який ніхто не міг зламати. Антон вирішив особисто це перевірити і вирішив розшифрувати його самостійно. Він помітив, що перед кожним повідомленням була намальована невелика піраміда, та перестановка з елементів.
Після тривалого процесу обдумування він зрозумів, що кожне повідомлення мало різний шифр, що базувався на кількості різних перестановок елементів, для яких виконувались наступні умови:
перестановка є пірамідальною.
перестановка є лексикографічно меншою за .
Ваше завдання полягає в тому, щоб для заданого знайти, скільки пірамідальних перестановок існує, які лексикографічно менші за . Оскільки це число може бути занадто великим, виведіть його за модулем .
Перестановка з елементів називається пірамідальною, якщо існує індекс , такий що:
для кожного (), ;
для кожного (), .
Послідовність цілих чисел називається перестановкою, якщо послідовність містить кожне ціле число від до рівно один раз. Наприклад, — це перестановка. Однак не є (вона не містить і містить , який не повинен з'являтися в послідовності), і також не є (вона містить двічі і не містить ).
Масив лексикографічно менший за масив , якщо і тільки якщо виконується одна з наступних умов:
є префіксом , але ;
на першій позиції, де відрізняються та , масив має менший елемент, ніж масив .
Вхідні дані
Перший рядок містить одне ціле число — довжина перестановки.
Другий рядок містить цілих чисел () — елементи перестановки.
Гарантується, що — це перестановка.
Вихідні дані
Виведіть одне ціле число — відповідь на завдання.
Приклади
Примітка
У першому прикладі існує пірамідальних перестановок, менших або рівних :
Але .
У другому прикладі існує лише пірамідальна перестановка, менша або рівна :
Оцінювання
( балів): ;
( балів): ;
( балів): ;
( балів): ;
( балів): ;
( балів): ;
( балів): без додаткових обмежень.