#include <iostream>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
int num[n][n];
int num_temp[n][n];
int answer[n][n];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin>>num[i][j];
num_temp[i][j]=num[i][j]; //num_temp充当原矩阵
}
}
while(k>1)
{
k--;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
answer[i][j]=0;
for(int k=0;k<n;k++)
{
answer[i][j]+=num[i][k]*num_temp[k][j];
/*
矩阵乘法,尤其注意i,j,k的位置:如num_temp2[0][1]是第一行乘以第二列,num_temp2[0][2]是第一行乘以第三列;num_temp2矩阵存放num和num_temp矩阵的相乘结果
*/
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
num[i][j]=answer[i][j]; //相乘后再把值赋回num矩阵
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<num[i][j]<<' ';
}
cout<<endl;
}
}