Type: Default 1000ms 256MiB

Congratulation

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

问题描述

有一个长度为n ,且每个数字等概率取[1, m]之间的整数的随机数组。对它进行一次变换,所有数字x都会变成a[x],其中a是给定的一个1~n 的排列。

可以证明经过有限次变换后数组一定会变回最初的样子,现在需要知道第一次变回自身所需变换次数的期望。请你输出期望答案乘上m^n 以后模10^9 + 7的结果。

Input

第一行输入包含整数 N,M 。

接下来N个整数表示排列a。

Output

输出一个整数表示答案。

Examples

输入样例1:

2 5 

2 1 4 5 3

输出样例1:

107

输入样例2:

3 5 

1 5 4 3 2

输出样例2:

249

输入样例3:

42 12 

2 1 4 3 6 7 5 9 10 11 12 8

输出样例3:

268468106

Notes

前 20%的测试数据满足 N ≤ 5, M ≤ 10;

前 40%的测试数据满足 N ≤ 1000, M ≤ 20;

前 60%的测试数据满足 N ≤ 1000, M ≤ 50;

前 80%的测试数据满足 N ≤ 10^9 , M ≤ 50;

全部测试数据满足 N ≤ 10^9 , M ≤ 200。

提高组测试改题

Not Attended
Status
Done
Rule
IOI
Problem
16
Start at
2023-7-22 13:30
End at
2023-7-26 17:30
Duration
100 hour(s)
Host
Partic.
13