#include <iostream>
using namespace std;
 
int main() {
	int n, m;
	cin >> m >> n;
	double a[m][m]; //Исходная матрица
	double b[m][m]; //Вспомогательная матрица
	double c[m][m]; //Матрица в степени n;
	double ans[m][m];
	for(int i = 0; i < m; i++){
		for(int j = 0; j < m; j++){
			a[i][j] = b[i][j] = c[i][j] = ans[i][j] = 0; //Очистка памяти
		}
	}
	for(int i = 0; i < m; i++){
		for(int j = 0; j < m; j++){
			cin >> a[i][j];
			c[i][j] = b[i][j] = ans[i][j] = a[i][j];
		}
	}
	for(int it = 1; it < n; it++){
		//Возводим матрицу в след. степень
		for(int i = 0; i < m; i++){
			for(int j = 0; j < m; j++){
				c[i][j] = 0;
				for(int k = 0; k < m; k++){
					c[i][j] += a[i][k]*b[k][j];
				}
			}
		}
		for(int i = 0; i < m; i++){
			for(int j = 0; j < m; j++){
				ans[i][j] += c[i][j]; //Добавляем к ответу
				b[i][j] = c[i][j]; //Заменяем вспомогательную матрицу
			}
		}
	}
	//Добавляем единичную матрицу
	for(int i = 0; i < m; i++){
		ans[i][i]++;
	}
	//Вывод результата
	for(int i = 0; i < m; i++){
		for(int j = 0; j < m; j++){
			cout << ans[i][j] << ' ';
		}
		cout << endl;
	}
	return 0;
}