Выступление с флагами
Вы отвечаете за команду в новом виде спорта — упорядоченной гимнастике. В этой дисциплине участвуют команды из человек. Каждый участник одет в костюм определённого цвета (число от до ) и держит флаг, также окрашенный в уникальный цвет, пронумерованный от до . Выступление состоит ровно из шагов. На каждом шаге два участника обмениваются флагами. Начальная расстановка флагов может быть выбрана произвольно. Единственное ограничение состоит в том, что в конце выступления каждый участник должен держать флаг, цвет которого соответствует цвету его костюма.
Как капитану команды, Вам хотелось бы сделать выступление максимально непредсказуемым. Вы рассматриваете возможных начальных расстановок флагов среди участников и хотите узнать: сколько существует способов выполнить выступление для каждой из начальных расстановок?
Для каждой из данных начальных расстановок определите количество возможных способов выполнить выступление. Так как ответы могут быть очень большими, выведите их по модулю простого числа .
Входные данные
Первая строка содержит три числа, разделённые пробелом: , и . Далее следуют строк, каждая из которых содержит различных целых чисел , представляющих -ю начальную конфигурацию флагов среди участников команды. Здесь — это номер цвета флага, который изначально находится у участника с цветом костюма .
Выходные данные
Выведите строк. -я из таких строк должна содержать одно число: количество возможных последовательностей обменов, которые начинаются с -й конфигурации и удовлетворяют указанным условиям, по модулю .
Примеры
Пример 1. Невозможно упорядочить флаги с помощью двух обменов.