#include <cstdio>
#include <iostream>

using namespace std;

//感觉重载乘法之后,直接套用快速幂就行了 

//本题需要提供初始化为单位矩阵的手段 

const int MAXN = 10+2;

class Matrix{
public:
	int matrix[MAXN][MAXN];
	int row;
	int col;
	Matrix(int r, int c):row(r),col(c){//初始化为单位矩阵 
		for(int i=0; i<row; i++){
			for(int j=0; j<col; j++){
				if(i == j){
					matrix[i][j] = 1;
				}else{
					matrix[i][j] = 0;
				}
			}
		}
	}
	void Input(void){
		for(int i=0; i<row; i++){
			for(int j=0; j<col; j++){
				scanf("%d",&matrix[i][j]);
			}
		}
	}
	void Output(void){
		for(int i=0; i<row; i++){
			for(int j=0; j<col; j++){
				printf("%d",matrix[i][j]);
				if(j!=col-1){
					printf(" ");
				}
			}
			printf("\n");
		}
	}
	Matrix operator*(const Matrix &m) const {
		Matrix ans(row,m.col);
		if(col != m.row){
			printf("Error!\n");
			exit(0);
		}
		for(int i=0; i<row; i++){
			for(int j=0; j<m.col; j++){
				ans.matrix[i][j] = 0;
				for(int k=0; k<col; k++){
					ans.matrix[i][j] += matrix[i][k] * m.matrix[k][j];
				}
			}
		}
		return ans;
	}
	void operator*=(const Matrix &m){
		Matrix ans = *this * m;
		*this = ans;
	}
};

Matrix Quickpowermatrix(Matrix M, int n){
	if(M.row != M.col){
		printf("Error!\n");
		exit(0);
	}
	Matrix ans(M.row,M.col);
	while(n){
		if(n%2){
			ans *= M;
		}
		M *= M;
		n /= 2;
	}
	return ans;
}

int main(){
	int size, n;
	while(scanf("%d%d",&size, &n) != EOF){
		Matrix M(size, si***put();
		Quickpowermatrix(M, n).Output();
	}
	return 0;
}