#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;
}