#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e9+1;
const ll mod=1e9+7;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL); 
    int n,m,k;
    cin>>n>>m>>k;
    int hori[n][m-1];
    for(int i=0;i<n;i++){
        for(int j=0;j<m-1;j++){
            cin>>hori[i][j];
        }
    }
    int verti[n-1][m];
    for(int i=0;i<n-1;i++){
        for(int j=0;j<m;j++){
            cin>>verti[i][j];
        }
    }
    if(k%2!=0){
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++)cout<<"-1 ";
            cout<<endl;
        }
        return 0;
    }
    k/=2;
    int dp[n][m][k+1];
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            for(int step=0;step<=k;step++)dp[i][j][step]=MAXN;
        }
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++)dp[i][j][0]=0;
    }
    for (int step = 0; step < k; step++) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < m; j++) {
                    if (i > 0) dp[i - 1][j][step + 1] = min(dp[i - 1][j][step + 1], dp[i][j][step] + verti[i-1][j]);
                    if (i < n - 1) dp[i + 1][j][step + 1] = min(dp[i + 1][j][step + 1], dp[i][j][step] + verti[i][j]);
                    if (j > 0) dp[i][j - 1][step + 1] = min(dp[i][j - 1][step + 1], dp[i][j][step] + hori[i][j-1]);
                    if (j < m - 1) dp[i][j + 1][step + 1] = min(dp[i][j + 1][step + 1], dp[i][j][step] + hori[i][j]);
                }
            }
        }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cout<<(2*dp[i][j][k])<<" ";
        }
        cout<<endl;
    }
    
    return 0;
}