#include<bits/stdc++.h>
#define int long long
template<class Type, int nn, int mm>
class matrix {
public:
Type val[nn + 3][mm + 3];
int n, m;
void read(int n, int m) {
this->n = n, this->m = m;
for (register int i = 0; i < n; i++)
for (register int j = 0; j < m; j++)
std::cin >> this->val[i][j];
}
void print() {
for (register int i = 0; i < n; i++) {
for (register int j = 0; j < m; j++) {
std::cout << this->val[i][j] << " ";
}
std::cout << "\n";
}
}
matrix operator -() {
matrix<Type, nn, mm> tmp;
for (register int i = 0; i < n; i++)
for (register int j = 0; j < m; j++)tmp.val[i][j] = -(this->val[i][j]);
return tmp;
}
matrix operator +(matrix b) {
matrix<Type, nn, mm> tmp;
for (register int i = 0; i < n; i++)
for (register int j = 0; j < m; j++)tmp.val[i][j] = (this->val[i][j] + b.val[i][j]);
return tmp;
}
matrix operator =(matrix b) {
for (register int i = 0; i < n; i++)
for (register int j = 0; j < m; j++)this->val[i][j] = b.val[i][j];
return b;
}
matrix operator +=(matrix b) {
(*this) = (*this) + b;
return (*this);
}
matrix operator -(matrix b) {
return (*this) + (-b);
}
matrix operator -=(matrix b) {
(*this) = (*this) - b;
return (*this);
}
matrix operator *(matrix b) {
matrix<Type,nn,mm> res;
res.m=res.n=this->n;
memset(res.val, 0, sizeof(res.val));
for (register int i = 0; i < this->n; i++)
for (register int j = 0; j < this->m; j++)
for (register int k = 0; k < b.m; k++)
res.val[i][j] = (res.val[i][j] + ((this->val[i][k] % 1000000007) * (b.val[k][j] % 1000000007)) % 1000000007) % 1000000007;
return res;
}
matrix operator *=(matrix b) {
(*this) = (*this) * b;
this->m=b.m;
return (*this);
}
matrix operator ^(long long y) {
matrix<Type,nn,mm> res;
res.m = res.n = n;
res.val[0][0] = -1;
while (y) {
if (y & 1) {
if (res.val[0][0] == -1)res = (*this);
else res *= (*this);
}
(*this) *= (*this);
y >>= 1;
}
return res;
}
matrix operator ^=(long long b) {
(*this) = (*this) ^ b;
return (*this);
}
};
matrix<long long, 101, 101>x,y;
signed main() {
long long n, m, k;
std::cin >> n >> m>>k;
x.read(n, m);
y.read(m, k);
x *= y;
x.print();
}