바이트아사르(Byteasar)는 n장의 카드로 이루어진 덱을 가지고 있다. 카드가 놓이는 자리에는 1번부터 n번까지 번호가 매겨져 있다. 그는 한 가지 셔플 동작을 완벽하게 익혀서, 셔플할 때마다 덱이 항상 똑같은 방식으로 재배열된다. 즉 k번 자리에 있던 카드는 언제나 ak번 자리로 옮겨진다. 모든 카드가 서로 다른 자리로 가므로, 수열 a1,a2,…,an은 1,2,…,n의 순열이다.
바이트아사르가 이 셔플을 연달아 l번 반복한다. 처음에 k번 자리에 있던 카드가 최종적으로 놓이는 자리를 bk라고 하자. 정확히는 ak(1)=ak, 그리고 t≥2에 대해 ak(t)=aak(t−1)로 정의하면 bk=ak(l)이다.
n, l과 수열 b1,b2,…,bn 전체가 주어진다. 이 관찰과 맞아떨어지는 셔플, 즉 모든 k에 대해 ak(l)=bk를 만족하는 순열 a가 몇 개인지 세어라. 그 개수가 매우 클 수 있으므로 109+7로 나눈 나머지를 출력한다. b를 만들어 내는 셔플이 하나도 없으면 답은 0이다.
첫째 줄에 두 정수 n과 l이 주어진다 (1≤n,l≤106). 이어지는 n개의 줄 중 k번째 줄에는 정수 bk (1≤bk≤n)가 하나씩 주어지며, 이는 셔플을 l번 반복한 뒤 처음 k번 자리에 있던 카드가 놓이는 자리이다. b1,…,bn은 1,…,n의 순열임이 보장된다.
셔플 a(즉 1,…,n의 순열) 중에서 a를 정확히 l번 반복했을 때 주어진 수열 b가 되는 것의 개수를 109+7로 나눈 나머지를 한 줄에 출력한다. 그런 셔플이 없으면 0을 출력한다.