#include<bits/stdc++.h>
#define int long long
using namespace std;
auto read = [](){
int x;
scanf("%lld", &x);
return x;
};
const int MOD = 998244353;
int n = read(), m = read(), sk = read(), a[50][50], b[50][50], f[3][50][50][50][95];
signed main(){
// freopen("1.out", "w", stdout);
for(int i = 1; i <= n; i ++){
for(int j = 1; j <= m; j ++)
a[i][j] = read();
}
for(int i = 1; i <= n; i ++){
for(int j = 1; j <= m; j ++)
b[i][j] = read();
}
f[1][1][0][0][0] = 1;
for(int i = 1; i <= n; i ++){
for(int j = 1; j <= m; j ++){
for(int k = 0; k <= n - i; k ++){
for(int l = 0; l <= m - j; l ++){
for(int o = 0; o <= sk; o ++){
if(a[i][j] + o <= sk && k < n - i)
(f[i % 3][j][k + 1][l][o + a[i][j]] += f[i % 3][j][k][l][o]) %= MOD;
}
}
}
for(int k = 0; k <= n - i; k ++){
for(int l = 0; l <= m - j; l ++){
for(int o = 0; o <= sk; o ++){
if(b[i][j] + o <= sk && l < m - j)
(f[i % 3][j][k][l + 1][o + b[i][j]] += f[i % 3][j][k][l][o]) %= MOD;
}
}
}
for(int k = n - i; k >= 0; k --){
for(int l = m - j; l >= 0; l --){
for(int o = 0; o <= sk; o ++){
if(k > 0 && i < n)
(f[(i + 1) % 3][j][k - 1][l][o] += f[i % 3][j][k][l][o]) %= MOD;
if(l > 0 && j < m)
(f[i % 3][j + 1][k][l - 1][o] += f[i % 3][j][k][l][o]) %= MOD;
}
}
}
printf("%lld ", f[i % 3][j][0][0][sk]);
}
printf("\n");
for(int j = 1; j <= m; j ++){
for(int k = 0; k <= n - i; k ++){
for(int l = 0; l <= m - j; l ++){
for(int o = 0; o <= sk; o ++)
f[i % 3][j][k][k][o] = 0;
}
}
}
}
return 0;
}