셔플

아직 제출이 없습니다시간 제한3초메모리 제한128 MB

문제

바이트아사르(Byteasar)는 nn장의 카드로 이루어진 덱을 가지고 있다. 카드가 놓이는 자리에는 11번부터 nn번까지 번호가 매겨져 있다. 그는 한 가지 셔플 동작을 완벽하게 익혀서, 셔플할 때마다 덱이 항상 똑같은 방식으로 재배열된다. 즉 kk번 자리에 있던 카드는 언제나 aka_k번 자리로 옮겨진다. 모든 카드가 서로 다른 자리로 가므로, 수열 a1,a2,,ana_1, a_2, \dots, a_n1,2,,n1, 2, \dots, n의 순열이다.

바이트아사르가 이 셔플을 연달아 ll번 반복한다. 처음에 kk번 자리에 있던 카드가 최종적으로 놓이는 자리를 bkb_k라고 하자. 정확히는 ak(1)=aka^{(1)}_k = a_k, 그리고 t2t \ge 2에 대해 ak(t)=aak(t1)a^{(t)}_k = a_{a^{(t-1)}_k}로 정의하면 bk=ak(l)b_k = a^{(l)}_k이다.

nn, ll과 수열 b1,b2,,bnb_1, b_2, \dots, b_n 전체가 주어진다. 이 관찰과 맞아떨어지는 셔플, 즉 모든 kk에 대해 ak(l)=bka^{(l)}_k = b_k를 만족하는 순열 aa가 몇 개인지 세어라. 그 개수가 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다. bb를 만들어 내는 셔플이 하나도 없으면 답은 00이다.

입력

첫째 줄에 두 정수 nnll이 주어진다 (1n,l1061 \le n, l \le 10^6). 이어지는 nn개의 줄 중 kk번째 줄에는 정수 bkb_k (1bkn1 \le b_k \le n)가 하나씩 주어지며, 이는 셔플을 ll번 반복한 뒤 처음 kk번 자리에 있던 카드가 놓이는 자리이다. b1,,bnb_1, \dots, b_n1,,n1, \dots, n의 순열임이 보장된다.

출력

셔플 aa(즉 1,,n1, \dots, n의 순열) 중에서 aa를 정확히 ll번 반복했을 때 주어진 수열 bb가 되는 것의 개수를 109+710^9 + 7로 나눈 나머지를 한 줄에 출력한다. 그런 셔플이 없으면 00을 출력한다.