F. Взаимно простые перестановки
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Два положительных целых числа взаимно просты, если их наибольший общий делитель равен 1.

Один медвежонок не хочет говорить Радевушу, как решается одна алгоритмическая задача, поэтому Радевуш решил взломать сейф медвежонка с решениями. Чтобы открыть дверь, требуется ввести в качестве кода перестановку целых чисел от 1 до n. Дверь откроется, только если для перестановки выполнится следующее условие:

Другими словами, два элемента взаимно просты, если и только если их индексы взаимно просты.

Некоторые элементы перестановки уже выбраны. Сколько существует способов заполнить оставшиеся позиции так, чтобы сейф открылся? Найдите остаток от деления этого числа на 109 + 7.

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

В первой строке входных данных записано число n (2 ≤ n ≤ 1 000 000) — количество элементов в перестановке.

Во второй строке записаны n целых чисел p1, p2, ..., pn (0 ≤ pi ≤ n), причём pi = 0 означает, что это место ещё свободно, а pi ≥ 1 означает определённое число.

Гарантируется, что если i ≠ j и pi, pj ≥ 1, то pi ≠ pj.

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

Выведите остаток от деления количества способов заполнить оставшиеся позиции на 109 + 7 (то есть ответ по модулю 1 000 000 007).

Примеры
Входные данные
4
0 0 0 0
Выходные данные
4
Входные данные
5
0 0 1 2 0
Выходные данные
2
Входные данные
6
0 0 1 2 0 0
Выходные данные
0
Входные данные
5
5 3 4 2 1
Выходные данные
0
Примечание

В первом примере все четыре элемента перестановки ещё не определены. Поставленным условиям удовлетворяют четыре перестановки: (1, 2, 3, 4), (1, 4, 3, 2), (3, 2, 1, 4) и (3, 4, 1, 2).

Во втором примере уже определены p3 = 1 и p4 = 2. Условие выполнится для двух перестановок (3, 4, 1, 2, 5) и (5, 4, 1, 2, 3).