색칠 공부

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

문제

상근이는 시간이 날 때마다 색칠 공부를 한다. 상근이에게는 색이 KK가지 담긴 팔레트와 붓 한 자루가 있다. 친구 선영이는 생일 선물로 색칠 공부 책을 줬다. 책에는 그림이 NN개 있고, 1번부터 NN번까지 번호가 붙어 있다.

상근이는 그림마다 KK가지 색 중 하나를 골라 칠하려고 한다. 선영이는 화려한 것을 좋아해서 숫자 NNf1,f2,,fNf_1, f_2, \dots, f_N을 정해 줬다. 상근이는 ii번 그림을 fif_i번 그림과 다른 색으로 칠해야 한다. iifif_i가 같으면 ii번 그림은 아무런 제한 없이 칠할 수 있다.

NNKK, 그리고 fif_i가 모두 주어졌을 때 상근이가 색칠 공부 책을 칠하는 방법의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NNKK가 주어진다. (1N,K1,000,0001 \le N, K \le 1{,}000{,}000)

둘째 줄에 숫자 NNf1,f2,,fNf_1, f_2, \dots, f_N이 주어진다. (1fiN1 \le f_i \le N)

출력

첫째 줄에 색칠 공부 책을 칠하는 방법의 수를 출력한다. 방법의 수가 매우 많기 때문에 1,000,000,0071{,}000{,}000{,}007로 나눈 나머지를 출력한다.

힌트

N=2N = 2, K=3K = 3, f=(2,1)f = (2, 1)인 경우 1번 그림과 2번 그림을 같은 색으로 칠할 수 없다. 두 그림에 칠한 색을 순서쌍으로 적으면 (1,2), (1,3), (2,1), (2,3), (3,1), (3,2)의 여섯 가지다.