#include<bits/stdc++.h>
using namespace std;
const int N=1e9+7;
int n;
long long k;
struct mat{
long long a[105][105];
mat(){
memset(a,0,sizeof(a));
}
void build(){
for(int i=1;i<=n;i++)
{
a[i][i]=1;
}
}
}a,ans1;
mat operator *(const mat &x,const mat &y)
{
mat z;
for(int k=1;k<=n;k++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
z.a[i][j]=(z.a[i][j]+x.a[i][k]*y.a[k][j]%N)%N;
}
}
}
return z;
}
mat fp(int x)
{
mat ans;ans.build();
while(x)
{
if(x&1)
{
ans=ans*a;
}
a=a*a;
x/=2;
}
return ans;
}
int main(){
scanf("%d%lld",&n,&k);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%lld",&a.a[i][j]);
ans1=fp(k);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
printf("%lld ",ans1.a[i][j]);
printf("\n");
}
return 0;
}
求助,快速幂放在主函数外就只对最后一个点,放在主函数里就全对