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

Днепропетровск покоряет космос

Днепропетровск покоряет космос

\includegraphics{https://static.e-olymp.com/content/a7/a79de2a50da758b2f420a52b59b5206efcaff18d.jpg} Всем известно, что Днепропетровск -- космическая столица Украины. Ракеты-носители, двигатели и другие устройства для покорения космоса, сделанные на Южном Машиностроительном Заводе известны во всем мире. Совсем недавно, например, была запущена американская ракета-носитель Антарес на двигателях, сделанных в КБ "Южное". В общем, изучение космоса силами Днепропетровска не прекращается. Очень важной задачей для космических аппаратов является связь с Землёй. Этот процесс решили смоделировать. На компьютер передается перестановка натуральных чисел от \textbf{1} до \textbf{n}. При этом возможны погрешности при передаче данных, поэтому вместо некоторого числа \textbf{a} может быть передано число \textbf{a-1}, число \textbf{a} или \textbf{a+1}. Хотелось бы восстановить исходную перестановку по полученному набору данных. Но оказалось, что сделать это однозначно можно не всегда. Ваша задача, как участника традиционного Всеукраинского конкурса "Мирный космос", найти, сколько различных перестановок мог дать такой набор полученных данных. \InputFile В первой строке задано число \textbf{n} (\textbf{1} ≤ \textbf{n} ≤ \textbf{10^5}). В следующей строке \textbf{n} чисел. Все числа лежат в диапазоне от \textbf{0} до \textbf{n+1}. \OutputFile Единственное число -- ответ на задачу. Так как число может быть очень большим, выведите его остаток при делении на \textbf{1000000007} (\textbf{10^9+7}).
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
3
1 2 3
Выходные данные #1
3
Автор Андрей Селиванов
Источник III Открытая Дистанционная Олимпиада 2013-2014 им. В.Л.Дидковского