#include <bits/stdc++.h>
#define MAX 100
using namespace std;

typedef long long ll;

typedef struct matrix{
	ll data[MAX][MAX];
	matrix(){
		memset(data,0,sizeof(data));
	}
}matrix;

matrix multiply(matrix &a,matrix &b,int n){	//两个矩阵相乘 
	matrix c;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= n; j++){
			for(int k = 1; k <= n; k++){
				c.data[i][j] += a.data[i][k] * b.data[k][j];	
			}
		}
	}
	return c;
}

matrix qmi(matrix &a,ll m,int n){	//n阶矩阵a的m次幂 
	matrix res;
	for(int i = 1; i <= n; i++)
		res.data[i][i] = 1;
	while(m){
		if(m & 1)
			res = multiply(res,a,n);	//相乘 
		a = multiply(a,a,n);	//n矩阵的幂次翻倍
		m >>= 1; 
	}
	return res; 
}



int main(){
	int n,k;
	
	while(cin>>n>>k){
		matrix a;
		for(int i = 1; i <= n; i++)
			for(int j = 1; j <= n; j++)
				cin>>a.data[i][j];
		a = qmi(a,k,n);
		for(int i = 1; i <= n; i++){
			for(int j = 1; j <= n; j++)
				cout<<a.data[i][j]<<" ";
			cout<<endl;
		}

	}
}