#include <iostream>
using namespace std;
int** multiply(int **p1,int** p2,int n)
{
int **p;
int i,j;
p=new int*[n];
for(i=0;i<n;i++)
p[i]=new int[n];
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
p[i][j]=0;
}
}
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
int h=i,l=j;
for(int k=0;k<n;k++)
{
p[i][j]+=p1[i][k]*p2[k][j];
}
}
}
return p;
}
int main()
{
int T,n,k;
cin>>T;
while(T)
{
cin>>n>>k;
int i=0,j=0;
// int **p=(int *)malloc(sizeof(int)*n)
int **p;
p=new int*[n];
for(i=0;i<n;i++)
p[i]=new int[n];
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
cin>>p[i][j];
}
}
int **result;
result=new int*[n];
for(i=0;i<n;i++)
result[i]=new int[n];
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
result[i][j]=p[i][j];
}
}
int t=T;
int **r=new int[t];
while(k-1)
{
result=multiply(result,p,n);
k--;
}
r[t-T]=result;
T--;
}
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
cout<<result[i][j]<<" ";
}
cout<<endl;
}
return 0;
}
using namespace std;
int** multiply(int **p1,int** p2,int n)
{
int **p;
int i,j;
p=new int*[n];
for(i=0;i<n;i++)
p[i]=new int[n];
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
p[i][j]=0;
}
}
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
int h=i,l=j;
for(int k=0;k<n;k++)
{
p[i][j]+=p1[i][k]*p2[k][j];
}
}
}
return p;
}
int main()
{
int T,n,k;
cin>>T;
while(T)
{
cin>>n>>k;
int i=0,j=0;
// int **p=(int *)malloc(sizeof(int)*n)
int **p;
p=new int*[n];
for(i=0;i<n;i++)
p[i]=new int[n];
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
cin>>p[i][j];
}
}
int **result;
result=new int*[n];
for(i=0;i<n;i++)
result[i]=new int[n];
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
result[i][j]=p[i][j];
}
}
int t=T;
int **r=new int[t];
while(k-1)
{
result=multiply(result,p,n);
k--;
}
r[t-T]=result;
T--;
}
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
{
cout<<result[i][j]<<" ";
}
cout<<endl;
}
return 0;
}