#ifdef LOCAL
    #include "debugger.h"
    #define dbg(...) cerr << "LINE(" << __LINE__ << ") -> [" << #__VA_ARGS__ << "]: [", debug(__VA_ARGS__)
#else
    #define dbg(...) 5
#endif
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define mp make_pair
#define F first
#define S second

int N,M,K;
ll ledge[505][505],dedge[505][505];
ll dp[505][505][25];

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cin>>N>>M>>K;
	for(int i=0;i<N;i++){
		for(int j=0;j<M-1;j++){
			cin>>ledge[i][j];
		}
	}
	for(int i=0;i<N-1;i++){
		for(int j=0;j<M;j++){
			cin>>dedge[i][j];
		}
	}
	for(int k=1;k<K;k++){
		for(int i=0;i<N;i++){
			for(int j=0;j<M;j++){
				ll res=1e18;
				if(i-1>=0){
					res=min(res,dp[i-1][j][k-1]+dedge[i-1][j]);
				}
				if(i+1<N){
					res=min(res,dp[i+1][j][k-1]+dedge[i][j]);
				}
				if(j-1>=0){
					res=min(res,dp[i][j-1][k-1]+ledge[i][j-1]);
				}
				if(j+1<M){
					res=min(res,dp[i][j+1][k-1]+ledge[i][j]);
				}
				if(res==1e18){
					dp[i][j][k]=-1;
				}
				else{
					dp[i][j][k]=res;
				}
				dbg(i,j,k,dp[i][j][k]);
			}
		}
	}
	if(K&1){
		for(int i=0;i<N;i++){
			for(int j=0;j<M;j++){
				cout<<-1<<" ";
			}
			cout<<"\n";
		}
	}
	else{
		for(int i=0;i<N;i++){
			for(int j=0;j<M;j++){
				cout<<2*dp[i][j][K/2]<<" ";
			}
			cout<<"\n";
		}
	}
}
