1 #include <iostream>
2 #include <algorithm>
3 #include <cstdio>
4 #include <cstring>
5 using namespace std;
6
7 typedef long long ll;
8 int n, m;
9 const int maxn = 105;
10 const int MOD = 1e9 + 7;
11
12 struct node{
13 ll a[maxn][maxn];
14 };
15
16 node A, ans;
17
18 node multi(node x, node y){
19 node z;
20 for(int i = 1;i <= n;i++){
21 for(int j = 1;j <= n;j++){
22 z.a[i][j] = 0;
23 for(int k = 1;k <= n;k++){
24 z.a[i][j] += x.a[i][k]*y.a[k][j]%MOD;
25 z.a[i][j] %= MOD;
26 }
27 }
28 }
29 return z;
30 }
31
32 void f(){
33 while(m > 0){
34 if(m%2){
35 //ans = ans*a%MOD;
36 ans = multi(ans, A);
37 }
38 //a = (a*a)%MOD;
39 A = multi(A,A);
40 m /= 2;
41 }
42 }
43
44 int main(){
45 ios_base::sync_with_stdio(false);
46 cin.tie(0);
47 cin >> n >> m;
48 for(int i = 1;i <= n;i++){
49 for(int j = 1;j <= n;j++){
50 cin >> A.a[i][j];
51 ans.a[i][j] = A.a[i][j];
52 }
53 }
54 m--;
55 f();
56 for(int i = 1;i <= n;i++){
57 for(int j = 1;j<=n;j++)
58 {
59 if(j == 1){
60 cout << ans.a[i][j];
61 }
62 else{
63 cout << " " << ans.a[i][j];
64 }
65 }
66 cout << endl;
67 }
68 return 0;
69 }