#include<bits/stdc++.h>
#define N 505
using namespace std;
int n,m,k;
int a[N][N],b[N][N];
long long dp[N][N][30];

int main(){
	scanf("%d%d%d",&n,&m,&k);
	memset(dp,127,sizeof(dp));
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m-1;j++){
			scanf("%d",&a[i][j]);
		}
	}
	for(int i=1;i<=n-1;i++){
		for(int j=1;j<=m;j++){
			scanf("%d",&b[i][j]);
		}
	}
	if(k%2==1){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++)
				printf("-1 ");
			puts("");
		}
		return 0;
	}
	for(int i=0;i<=n;i++){
		for(int j=0;j<=m;j++){
			dp[i][j][0] = 0;
		}
	}
	for(int p=1;p<=k/2;p++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(i+1<=n) dp[i + 1][j][p] = min(dp[i + 1][j][p], dp[i][j][p - 1] + b[i][j]);
				if(i-1>=1) dp[i - 1][j][p] = min(dp[i - 1][j][p], dp[i][j][p - 1] + b[i-1][j]);
				if(j+1<=m) dp[i][j + 1][p] = min(dp[i][j + 1][p], dp[i][j][p - 1] + a[i][j]);
				if(j-1>=1) dp[i][j - 1][p] = min(dp[i][j - 1][p], dp[i][j][p - 1] + a[i][j-1]);
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++)
			printf("%lld ",dp[i][j][k/2]*2);
		puts("");
	}
	return 0;
}
