#dpr. [dp_r]Walk

[dp_r]Walk

问题描述

有一个简单的有向图GG,具有NN个顶点,编号为1,2,,N1, 2, \ldots, N

对于任意iijj(1i,jN1\leq i, j \leq N),给定一个整数ai,ja_{i, j}表示是否存在一个从顶点iijj的有向边。如果ai,j=1a_{i, j} = 1,则表示存在从顶点iijj的有向边;如果ai,j=0a_{i, j} = 0,则表示不存在。

求在图GG中长度为KK的不同有向路径的数量,结果需对109+710^9 + 7取模。在计算路径数量时,允许路径经过同一条边多次。

约束条件

  • 输入中的所有值均为整数。
  • 1N501 \leq N \leq 50
  • 1K10181 \leq K \leq 10^{18}
  • ai,ja_{i, j}的取值为0011
  • ai,i=0a_{i, i} = 0

输入

输入以以下格式从标准输入中给出:

NN KK a1,1a_{1, 1} \ldots a1,Na_{1, N} : aN,1a_{N, 1} \ldots aN,Na_{N, N}

输出

输出在图GG中长度为KK的不同有向路径的数量,结果需对109+710^9 + 7取模。


示例输入1

4 2
0 1 0 0
0 0 1 1
0 0 0 1
1 0 0 0

示例输出1

6

GG如下所示:

长度为22的有向路径共有66条:

  • 112233
  • 112244
  • 223344
  • 224411
  • 334411
  • 441122

示例输入2

3 3
0 1 0
1 0 1
0 0 0

示例输出2

3

GG如下所示:

长度为33的有向路径共有33条:

  • 11221122
  • 22112211
  • 22112233

示例输入3

6 2
0 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 0 0
0 0 0 0 1 0
0 0 0 0 0 1
0 0 0 0 0 0

示例输出3

1

GG如下所示:

长度为22的有向路径共有11条:

  • 445566

示例输入4

1 1
0

示例输出4

0

示例输入5

10 1000000000000000000
0 0 1 1 0 0 0 1 1 0
0 0 0 0 0 1 1 1 0 0
0 1 0 0 0 1 0 1 0 1
1 1 1 0 1 1 0 1 1 0
0 1 1 1 0 1 0 1 1 1
0 0 0 1 0 0 1 0 1 0
0 0 0 1 1 0 0 1 0 1
1 0 0 0 1 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0
1 0 1 1 1 0 1 1 1 0

示例输出5

957538352

注意要对结果取模109+710^9 + 7