경기과학고에 재학 중인 N명의 학생들은 연말마다 선물을 주고받는 기념비적인 행사를 진행한다. 학교에서 주관하는 중요한 행사인 만큼, 모두가 참여하여 미리 선물을 준비하고 전달한다. 그러나 선물을 받지 못해 슬퍼하는 학생이 있어서는 안 되기 때문에 아래와 같은 세 가지 기본 규칙이 있다.
물론 A_i=i여서 i번 학생이 자신에게 선물을 주는 것도 가능하다.
경기과학고의 행사 관리자인 여러분은 위 규칙이 완벽하다고 생각했기 때문에, 규칙을 따로 바꾸지 않고 몇 년 동안 행사를 그대로 이어 왔다. 그러나 행사의 만족도는 점차 떨어졌고 작년의 만족도 조사에서는 대부분의 학생들이 '이 행사의 의미를 잘 모르겠다'라고 답했다. 이유를 물어 보니, 누구한테서 선물을 받을지가 너무 뻔하다는 것이었다. 따라서 올해는 학생들에게 알리지 않은 채로 아래 규칙을 추가해서 행사를 진행했다.
그러자 i번 학생이 처음 가지고 있던 선물은 B_i번 학생에게로 가게 되었고, 모든 학생은 신선하다며 높은 만족도를 보였다. 여러분 또한 새로운 규칙에 만족했다. 그러다 문득 각 학생이 2번 규칙에서 어떤 수를 골랐는지 알고 싶어졌다. i번 학생이 처음 가지고 있던 선물을 최종적으로 받게 된 학생의 번호 B_i들의 배열 \[B_1,B_2,...,B_N]이 주어졌을 때, i번 학생이 2번 규칙에서 고른 자연수 A_i들의 배열 \[A_1,A_2,...,A_N]로 가능한 것의 개수를 구해 보자.
첫 번째 줄에 두 양의 정수 N, K가 공백을 사이에 두고 주어진다. (1≤N,K≤1000)
두 번째 줄에는 N개의 양의 정수가 공백을 사이에 두고 주어진다. i번째 수는 i번 학생이 처음 가지고 있던 선물을 최종적으로 받게 된 학생의 번호 B_i를 의미한다. (1≤B_i≤N)
첫 번째 줄에 i번 학생이 고른 자연수 A_i들의 배열 \[A_1,A_2,...,A_N]으로 가능한 것의 개수를 109+7로 나눈 나머지를 출력한다.