길이가 K인 경로

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

문제

천나라에는 마을이 NN개 있고, 마을마다 1번부터 NN번까지 번호가 붙어 있다. 두 마을 사이에는 길이 있을 수도 있고 없을 수도 있으며, 길이 있다면 그 길의 길이는 모두 1이다. 길은 한쪽 방향으로만 지나갈 수 있다.

민호는 마을 사이의 연결 상태를 N×NN \times N 인접 행렬로 적어 두었다. 행렬의 ii번 줄 jj번 수가 1이면 ii번 마을에서 jj번 마을로 가는 길이 있고, 0이면 그 길은 없다. 대각선 원소가 1이면 그 마을에서 자기 자신으로 돌아오는 길이 있다는 뜻이다.

길이가 KK인 경로는 마을 번호를 나열한 수열 v0,v1,,vKv_0, v_1, \dots, v_K 중에서 모든 1tK1 \le t \le K에 대해 vt1v_{t-1}번 마을에서 vtv_t번 마을로 가는 길이 있는 것을 말한다. 같은 마을을 여러 번 지나도 되고, v0v_0vKv_K에는 아무 제한이 없다. 수열이 한 자리라도 다르면 서로 다른 경로로 센다.

인접 행렬이 주어지면 길이가 KK인 서로 다른 경로가 몇 개인지 구하는 프로그램을 작성하라.

입력

첫째 줄에 NNKK가 공백 하나로 구분되어 주어진다. (1N1001 \le N \le 100, 1K1091 \le K \le 10^9)

다음 NN개의 줄에 인접 행렬이 주어진다. 각 줄에는 0 또는 1인 정수 NN개가 공백으로 구분되어 있다.

출력

길이가 KK인 경로의 개수를 109+710^9+7로 나눈 나머지를 한 줄에 출력한다.

힌트

첫 번째 예제에서 길이가 2인 경로는 다음 6개다.

  • 1 → 2 → 3
  • 1 → 3 → 4
  • 2 → 3 → 4
  • 3 → 4 → 1
  • 4 → 1 → 2
  • 4 → 1 → 3