#ZF1121. 排序
排序
Description
如果一个排列对于每个 ,最多只存在 个 使得 时 ,那么这就是一个好排列。
假设你原本有一个排列 ,通过每次交换相邻两个元素的方式,进行了最小的次数得到了好排列 。
得到 后,原本的排列 却丢失了。现在给定 和 ,希望你求出可能的原排列 的个数。由于这个结果可能很大,所以求这个结果对 取模。
Format
Input
第一行有两个整数 。
第二行有 个整数 $(1 \leq P^{'}_i \leq N, P^{'}_i \ne P^{'}_j(i \ne j))$。
对于每个 ,最多只存在 个 使得 时 。
Output
输出一个整数,表示可能的原排列的个数对 取模的结果。
Samples
3 1
3 1 2
2
Note
应该是以下两种排列之一:
- :所需的最小交换次数为 。 次交换后,排列等于 ;
- :所需的最小交换次数为 :交换 和 得到 ,满足条件,等于。
4 3
4 3 2 1
1
5 2
4 2 1 5 3
3
Limitation
1s, 1024KiB for each test case.